2016-06-10 21 views
0

Ich richte eine web.config in wwwroot ein, um alle Anfragen an index.html für angularjs umzuleiten. Dies schließt vorhandene Dateien und Ordner und alles aus /api aus.ASP.net WebAPI ignoriert web.config?

Das Problem ist, es funktioniert nicht so. Ich bekomme einfach leere Seiten für alles, wo eine Datei nicht existiert.

Hier ist meine web.config:

<configuration> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    <handlers> 
     <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/> 
    </handlers> 
    <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/> 
    <rewrite> 
     <rules> 
     <rule name="IndexHomeRule" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions logicalGrouping="MatchAll"> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/> 
      <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/api/" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="/index.html" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

Ich kann keinen Grund herauszufinden, für sie immer noch die Dateien statt Umleitung sie index.html

Ich verwende laden zu versuchen. NET Core RC2 und ich haben statische Dateien und Standarddateien für die Verwendung festgelegt. Ich benutze VS2015. Ich habe das Projekt von Anfang an als WebAPI eingerichtet. Nicht leer.

+0

[ASP.NET-Core verwendet nicht web.config] (https://docs.asp.net/en/latest/fundamentals/configuration. html # getting-and-setting-konfigurationseinstellungen). Versuchen Sie, Ihre vorhandene ASP.NET-Anwendung auf ASP.NET Core zu portieren? – svick

+0

Ich bin eine neue Anwendung mit WebAPI erstellen und versuchen, so dass alle Links redirect to index.html, es sei denn, es gibt eine vorhandene Datei oder sie sind unter api/... aber das scheint nicht zu passieren. Stattdessen werden leere Seiten angezeigt und auf der Registerkarte "Netzwerk" der Chrome-Tools wird ein 404 angezeigt. – Samir

Antwort

0

können Sie Microsoft.AspNetCore.SpaServices verwenden:

app.UseMvc(options => 
{ 
    options.MapRoute("Api", 
     template: "api/{controller}/{action?}/{*path}", 
     defaults: new { controller = "Home" }); 

    options.MapSpaFallbackRoute("spa-fallback", new { controller = "Home", action = "Index" }); 
}); 
+0

Das schien das Problem nicht zu beheben. – Samir

+0

Ich denke, es ist, weil ich keine Ansichten verwende, aber ich will alles auf wwwroot/index.html umleiten. – Samir

+0

Sorry, ich habe einen weiteren Teil vergessen: Innerhalb des Codes für die Home/Index Aktion, leiten Sie die Datei index.html um. –