Настройте маршрутизацию IIS, чтобы разрешить угловую маршрутизацию для работы

#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>