#angular #iis #asp.net-web-api #angular-ui-router
#angular #iis #asp.net-web-api #angular-ui-router
Вопрос:
Я развернул приложение angular (интерфейсное приложение) на сервере IIS и развернул asp.net приложение Web API (серверное приложение) на другом сервере (используя другой сервер для приложения angular и asp.net приложение web API).
Когда я перехожу по URL-адресу приложения angular, я могу получить доступ к своей веб-странице. Когда я нажимаю на пункты меню, маршрутизатор angular перенаправляет меня на запрошенный URL, но когда я ввожу запрошенный URL в браузере, я получаю IIS 404 not found
ошибку.
Я понятия не имею, в чем проблема.
Комментарии:
1. Если у вас нет правила перезаписи URL, то работать невозможно devblogs.microsoft.com/premier-developer /…
Ответ №1:
Это происходит потому, что IIS ничего не знает о маршрутах на стороне клиента, поэтому вам нужно написать правило перезаписи, которое предписывает всегда направлять трафик по неизвестным URL-адресам в индексный файл приложения Angular. Angular позаботится об обслуживании правильного маршрута, когда это будет сделано.
Ответ №2:
IIS пытается перенаправить ваш запрос. Настройте IIS на перенаправление в root. После перенаправления IIS в root, Angular Routing получит остальную часть маршрута.
Вот что у меня есть в моем Web.config.
<rule name="Force Index.html" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{REQUEST_URI}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>