2016-12-05 6 views
1

Мне нужна помощь. Я начал разрабатывать angular2 с ядром Asp.net, и все было идеально. Для перенаправления всего 404 запроса на index.html я использую этот код в классе Startup.Angular2 routing with Asp.net 4.5

app.Use(async (context, next) => 
     { 
      await next(); 

      if (context.Response.StatusCode == 404 
       && !Path.HasExtension(context.Request.Path.Value)) 
      { 
       context.Request.Path = "/index.html"; 
       await next(); 
      } 
     }); 

Но, мне нужно вернуться к asp.net 4.5, и теперь у меня есть большая проблема с маршрутизацией. Я пытаюсь использовать аналогичный код в классе запуска Owin, но это не решило проблему.

Как перенести весь запрос на index.html? Один пример: у меня есть ссылка, которая перенаправляется на/logout, но с этим кодом в настоящее время app.module не отображается/выходит из системы, и я перенаправляюсь на домашнюю страницу приложения.

В учебнике, как использовать angular2 с осиной 4.5 (https://angular.io/docs/ts/latest/cookbook/visual-studio-2015.html) в последнем абзаце говорится:

Если это приложение используется Угловое маршрутизатор, обновление браузера может возвращать 404 - Страница не найдена. Посмотрите на адресную строку. Это содержит навигационный url («глубокая ссылка») ... любой путь, кроме/или /index.html?

Вам необходимо настроить сервер для возврата index.html для этих запросов. До тех пор, пока вы это сделаете, удалите навигационный путь и обновите его снова.

Как это сделать? Спасибо!

ответ

1

Вы можете перенаправить все на страницу index.html, чтобы решить эту проблему, вот код конфигурации я использовал в одном из моих проектов:

<rewrite> 
    <rules> 
    <rule name="RedirectEverything" 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.websever в вашем web.config

+0

Спасибо, человек, вы гений! – Djanko