Назад | Перейти на главную страницу

Как при использовании ASP.NET MVC3 IIS не перенаправляет 302 на маршрутизацию с учетом регистра?

Как при использовании ASP.NET MVC3 IIS не перенаправляет 302 на маршрутизацию с учетом регистра?

Например, я создаю папку приложения на моем сайте под названием «Admin» в IIS. JavaScript (есть сотни файлов, никаких тривиальных изменений, а затем, когда новый код создается или пишется, мы должны вручную применять регистр на всех маршрутах? Я думаю, что это излишне) и некоторые рукописные ссылки все указывают на /admin/ControllerName/ или /admin/controllername/ уже, поэтому, когда IIS видит это, он выдает 302 на /Admin/ControllerName/. Очевидно (я проверил, чтобы убедиться в этом), простая замена корпуса предотвращает 302.

Каждое изображение, включая javascript и т. Д., Вызывает два обращения к IIS.

Как я могу уменьшить трафик и просто заставить IIS перенаправить меня без учета регистра, чтобы мы могли остановить все глупые 302-е. Или это невозможно, и я должен навсегда ввести в действие каждый потенциальный URL-адрес во всем коде, который мы пишем? Или мне просто нужно смириться и жить с 302-м?

Я предполагаю, что вы используете WS-Federation? Или, по крайней мере, с помощью WSFederationAuthenticationModule и / или SessionAuthenticationModule? Оба этих модуля выполняют перенаправление, чтобы соответствовать корпусу вашего приложения, поскольку оно находится в IIS, каждый раз, когда они не могут аутентифицировать вас или подтвердить, что вы авторизованы для получения запрошенного ресурса. Я не вижу способа удержать его от этого, и даже если бы вы могли, вы, вероятно, не смогли бы получить доступ к ресурсам, используя /admin.

Причина этого в том, что путь, указанный в файлах cookie, чувствителен к регистру, а поскольку все, что связано с WS-Federation, выполняется через файлы cookie, регистр должен совпадать. Если файлы cookie, показывающие, что вы прошли аутентификацию, созданы для /Admin а затем вы пытаетесь получить доступ /admin, он будет думать, что вы не аутентифицированы.

Одним из возможных обходных путей было бы установить каталог администратора как отдельное приложение в IIS и настроить его так, чтобы он не использовал FAM или SAM. Однако, исходя из имени каталога, я предполагаю, что это не будет для вас жизнеспособным вариантом, поскольку вы потеряете аутентификацию в этом каталоге.

Хмммм, я думал IIS был без учета регистра.

Вы уверены, что здесь не происходит перезаписи URL, которую можно просто отключить?

Ура