Удалить этот вопрос? Я понял, в чем проблема, и это не было ИИС... См. Мой ответ ниже для результата.
Оригинальный вопрос Я работаю над ASP.Net MVC-приложением и забегаю к странной проблеме с перенаправлением URL-адресов Rewrite и AJAX.
Я добавил следующее правило перезаписи для моего Web.config в корневом сайте.
<rewrite>
<rules>
<rule name="Account" stopProcessing="true">
<match url="^SubApp/Account/(.*)$" />
<action type="Redirect" url="Account/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>
Кажется, что все работает нормально, если я использую Permanent
или Temporary
redirectType
в конфигурации, но с ошибкой с страницей ошибок HTTP Error 401.0 - Unauthorized
IIS.
Когда я делаю обычный запрос GET через браузер для действия, которое запускает это правило, например. https://some-site/SubApp/Account/Settings
, тогда я получаю 302 Найдено, и заголовок местоположения установлен на ожидаемый URL https://some-site/Account/Settings
, и соответствующая страница отображается.
Однако, когда я делаю запрос GET через JQuery AJAX, т.е. $.get('https://some-site/SubApp/Account/Settings')
, возвращаемый код состояния ответа 401 Unauthorized
, но у него все еще есть соответствующий заголовок местоположения.
Содержимое ответа представляет собой стандартную страницу ошибки IIS HTTP Error 401.0 - Unauthorized
.
Похоже, что все работает нормально, если я использую типы перенаправления Permanent
или Temporary
в конфигурации, но не работает только с Found
.
/SubApp
- отдельное приложение, которое находится ниже корневого сайта в /
.
Что происходит?
Скриншоты
redirectType="Permanent"
redirectType="Found"
redirectType="Temporary"
Как видно из скриншотов, единственное отличие - это redirectType
, указанный в Web.config
.
Как вы можете видеть, переадресации происходят, как ожидалось, с исключением типа перенаправления Found
, который я ожидал бы получить перенаправление ответа 302 - Found
на тот же URL, что и другие.