2016-07-22 12 views
5

Ich habe ein Problem mit ASP.NET Core-Webanwendung unter IIS 10. Ich entwickle eine Single Page Application mit AngularJS.ASP.NET Core 404 Fehler auf IIS 10

Die index.html lädt perfekt, aber die Back-End-Anforderungen sind mit 404 Fehlercode auf dem IIS 10 fehlgeschlagen. Von Visual Studio mit IIS Express funktioniert es perfekt.

Kann jemand feststellen, wie kann ich die Back-End-Anfragen beheben?

Hier ist meine Program.cs

public static void Main(string[] args) 
{ 
    var host = new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseIISIntegration() 
     .UseStartup<Startup>() 
     .Build(); 

    host.Run(); 
} 

Und hier ist mein Configure-Methode von Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    app.UseDefaultFiles(); 

    app.UseStaticFiles(); 

    app.UseIdentity(); 

    // Custom middleware for Angular UI-Router 
    app.Use(async (context, next) => 
    { 
     if (!Path.HasExtension(context.Request.Path.Value) 
     && context.Request.HttpContext.Request.Headers["X-Requested-With"] != "XMLHttpRequest" 
     && context.Request.Method.ToUpper() != "POST" 
     && context.Request.Method.ToUpper() != "PUT" 
     && context.Request.Method.ToUpper() != "DELETE") 
     { 
      await context.Response.WriteAsync(File.ReadAllText(env.WebRootPath + "/index.html")); 
     } 

     await next(); 
    }); 

    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "default", 
      template: "api/{controller=Home}/{action=Index}/{id?}"); 
    }); 
} 
+0

500 Fehler warf Aktivieren Sie die ASP.NET Core-Protokollierung (wahrscheinlich mit einer Debug-Protokollebene), und prüfen Sie, ob Meldungen darüber vorliegen, warum dies fehlschlägt. –

+0

Veröffentlichen Sie auch Ihre web.config. –

+0

Haben Sie die MVC-Dienste konfiguriert? –

Antwort

3

Sie Code auf meinem Rechner mit Kestrel arbeiten. Ein guter Schritt zur Fehlerbehebung besteht darin, herauszufinden, ob das Problem mit Ihrer ASP.NET Core-Anwendung oder mit Ihrer IIS-Hosting-Konfiguration zusammenhängt.

Versuchen Sie dies aus der Wurzel Ihres Projekts.

dotnet restore 
dotnet run 

Sie werden etwas sehen:

Hosting environment: Production 
Content root path: C:\MyApplicationPath 
Now listening on: http://localhost:5000 
Application started. Press Ctrl+C to shut down. 

In Ihrem Browser auf die beiden folgenden URLs gehen. Wenn sie nicht funktionieren, stimmt etwas mit Ihrer Bewerbung nicht. Wenn sie funktionieren, stimmt etwas nicht mit Ihrem IIS-Hosting.

localhost:5000  // you will see your index.html page 
localhost:5000/api // you will see your default routes output 
+1

Danke, ich könnte es reparieren. Das Problem war mit meiner Anwendung, aber es ist ein bisschen komisch, einen Fehler 404 zu werfen, wenn etwas mit der Anwendung nicht in Ordnung ist. –

+1

Was war falsch an der Anwendung? Was hat dein Fehler betroffen? –

+1

Das Problem war eine fehlende Konfigurationsdatei. Ich habe 3 Umgebung Appsettings-Datei für Entwicklung, Bereitstellung und Produktion mit den erforderlichen Verbindungszeichenfolgen. Die Standardveröffentlichungsoption enthält nur die Appsettings.json. Also muss ich den Wert in appsettings * .json ändern, um alle Umgebungseinstellungen zu kopieren. –

6

In meinem Fall war das Problem, dass mein Controller eine Ausnahme ausgelöst hat, so versucht das Framework die Exception-Handler-Seite zu verwenden, die die 404-Fehler nicht verfügbar, so war der Controller selbst

Verwandte Themen