Au moment de servir l'application avec des fichiers statiques .NET de base, je suis incapable de changer l'URL dans le navigateur. Ce faisant, on me donne lade base .NET, Angular2, NancyFX - 404 changer l'URL dans le navigateur
404 - Not Found
page d'erreur de Nancy.
La seule URL qui fonctionne est l'URL de base, localhost: 5000. Changer l'URL pour localhost: 5000/réservations me donne 404. Appuyez sur F5 quand pas sur l'URL de base se traduira également par un 404.
Si j'utilise l'URL de browsersync, localhost: 4200, tout fonctionne et je peux changer le URL et appuyez sur F5 sans 404. C'est ce que je fais lors du développement, mais pas quand il est déployé sur le serveur en utilisant IIS.
Exécution de l'application dans IIS express
ng build (les fichiers sont copiés wwwroot avec index.html)
début IIS express
Startup.cs
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
env.ConfigureNLog("nlog.config");
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
services.AddMvc();
services.InjectServices();
services.AddOptions();
services.Configure<Endpoints>(Configuration.GetSection("Endpoints"));
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSingleton<IConfiguration>(Configuration);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Use(async (context, next) =>
{
await next();
if (!context.Request.Path.Value.StartsWith("/api/"))
{
context.Request.Path = "/index.html";
await next();
}
});
app.UseDefaultFiles();
app.UseStaticFiles();
loggerFactory.AddNLog();
app.AddNLogWeb();
app.UseOwin(x => x.UseNancy(new NancyOptions
{
Bootstrapper = new Bootstrapper(app)
}));
}
}
Bootstrapper.cs
public class Bootstrapper : DefaultNancyBootstrapper
{
readonly IApplicationBuilder _app;
public Bootstrapper(IApplicationBuilder app)
{
_app = app;
}
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
base.ConfigureApplicationContainer(container);
container.Register<IOptions<Endpoints>>(_app.ApplicationServices.GetService<IOptions<Endpoints>>());
container.Register<IReservationService>(_app.ApplicationServices.GetService<IReservationService>());
}
}
wwwroot
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>XXX</title>
<base href="/">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" type="image/x-icon" href="XXX">
<link href="styles.61cc257ef8131303860b.bundle.css" rel="stylesheet" />
</head>
<body>
<app-root></app-root>
<script type="text/javascript" src="inline.f68c652d205feae6e02a.bundle.js"></script>
<script type="text/javascript" src="polyfills.756a44edc7e0a68ce65c.bundle.js"></script>
<script type="text/javascript" src="vendor.940a3ce39a746f717f7b.bundle.js"></script>
<script type="text/javascript" src="main.d5f9dd82a3600822cae2.bundle.js"></script>
</body>
</html>
Je comprends qu'il ya un problème avec la gestion du contenu statique du serveur, mais je ne peux pas sembler figurer dehors.
Comment puis-je naviguer dans l'aide de l'URL du navigateur lors de l'hébergement de l'application angulaire dans .NET Core?
Mise à jour 1:
Après avoir ajouté:
PerformPassThrough = (context => context.Response.StatusCode == HttpStatusCode.NotFound)
le 404 message d'erreur disparaît, mais la page est maintenant vide sans aucun message d'erreur, sauf la 404 dans la console ..
Pas de succès, encore 404 – Reft
Pour mauvais. C'est comme ça, comment cela fonctionne pour moi: http://asp.net-hacker.rocks/2016/04/04/aspnetcore-and-angular2-part1.html Peut-être que c'est à cause de quelque config NancyFX, je n'ai jamais travaillé avec il. –
S'il vous plaît voir ma réponse et laissez-moi savoir si vous avez des objections :) Merci – Reft