Как IIS «перенаправление вежливости» влияет на ASP.NET MVC или другие веб-фреймворки? - PullRequest
2 голосов
/ 25 марта 2010

Я прочитал в http://support.microsoft.com/kb/298408, что IIS6.0 автоматически отвечает «перенаправлением вежливости» (HTTP 301) на URL, в которых нет точки.

Когда браузер запрашивает URL-адрес, такой как http://www.servername.de/SubDir,, браузер перенаправляется на http://www.servername.de/SubDir/. В конце URL-адреса включается косая черта.

Internet Information Server (IIS) сначала обрабатывает SubDir как файл, который он должен вернуть браузеру. Если этот файл не может быть найден, IIS проверяет, существует ли каталог с таким именем. Если каталог с таким именем существует, то в браузер возвращается перенаправленное сообщение с ответным сообщением 302 «Объект перемещен». Это сообщение также содержит информацию о новом местоположении каталога с косой чертой. В свою очередь, браузер запускает новый запрос GET к URL с завершающей косой чертой.

Как это поведение пересекается с такой средой, как ASP.NET MVC, которая использует URL-адреса, которые не требуют или используют точки, в общем?

В частности ... ASP.NET MVC "отключает" эту функцию IIS6.0 при установке? Если да, то как?

Я бы предположил, что это не , но вместо этого маршрутизация запросов, выполняемая в IIS, отправляет запрос в ASPNET перед выполнением перенаправления. Если бы кто-то мог объяснить, я был бы благодарен.

1 Ответ

2 голосов
/ 25 марта 2010

Механизм маршрутизации в ASP.NET MVC позволяет использовать маршруты без расширений в вашем приложении.Вы можете настроить IIS 6.0 для обработки таких URL-адресов, создав шаблонное сопоставление , которое связывает фильтр aspnet_isapi со всеми запросами, что означает, что все проходит через механизм ASP.NET для обработки.на сервере с IIS 6.0 ASP.NET MVC не вносит никаких изменений в метабазу IIS, что означает, что маршруты без расширений не будут работать.

Я бы порекомендовал использовать маршрутизацию без расширения только на IIS 7 и выше и иметь некоторое расширение (например, .mvc) для IIS 6.0.Это позволяет избежать подстановочных знаков и возможного снижения производительности, если механизм ASP.NET обслуживает даже статические файлы, такие как изображения, css, javascript, ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...