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

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

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

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

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

2 ответа

Решение

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

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

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

Хм, я думал, что IIS нечувствителен к регистру.

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

ура

Другие вопросы по тегам