2016-06-10 2 views
0

Я настраиваю web.config в wwwroot для перенаправления всех запросов на index.html для обработки углов. Это исключает существующие файлы и папки и все, начиная от /api.ASP.net WebAPI игнорирует web.config?

Проблема в том, что это не работает. Я просто получаю пустые страницы для чего-либо, где файл не существует.

Вот мой 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> 

Я не могу понять, какой-либо причине, чтобы он все еще пытается загрузить файлы вместо того, чтобы перенаправлять их index.html

Я использую. NET Core RC2, и у меня есть статические файлы и файлы по умолчанию, которые будут использоваться. Я использую VS2015. С самого начала я задал проект как WebAPI. Не пусто.

+0

[ASP.NET Ядро не использует web.config] (https://docs.asp.net/en/latest/fundamentals/configuration. HTML # посаживании и устанавливающие-конфигурация-настройка). Вы пытаетесь перенести существующее приложение ASP.NET в ASP.NET Core? – svick

+0

Я создаю новое приложение с использованием WebAPI и пытаюсь сделать так, чтобы все ссылки перенаправлялись на index.html, если нет существующего файла или они находятся под api/... однако, похоже, это не происходит. Вместо этого отображаются пустые страницы и отображается 404 на вкладке «Сеть» инструментов Chrome dev. – Samir

ответ

0

Вы можете использовать Microsoft.AspNetCore.SpaServices:

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

Это не похоже на проблему. – Samir

+0

Я думаю, что это потому, что я не использую представления, но хочу, чтобы все перенаправлялось на wwwroot/index.html. – Samir

+0

Извините, я забыл еще одну часть: внутри кода для действия Home/Index вы перенаправляете файл index.html. –

Смежные вопросы