Я помню, как пытался использовать формат URL без расширений в CMS, который я написал еще, когда впервые появился .NET 2.0. Проблема заключалась в развертывании на сервере IIS6. Это сделало это практически невозможным. Мне пришлось программно создать папки для пути (тонны папок) и вставить туда фиктивный «Default.aspx», чтобы запрос был перенаправлен в ASP.NET. Конечно, я ненавидел это «решение», и мне пришлось отказаться от использования URL-адресов без расширений.
Теперь, когда я начинаю работать с ASP.NET MVC, я снова хочу (должен) использовать URL-адреса без расширений. Может ли кто-нибудь сказать мне, будут ли у меня такие же головные боли, когда я попытаюсь развернуть приложение на IIS6? Требуется ли что-нибудь особенное, чтобы этот тип структуры URL-адресов работал в IIS6?
В IIS 6 возможны URL-адреса без расширений, но для этого требуется настройка сопоставления ISAPI с «подстановочными знаками» в конфигурации приложения сайта. У этого есть обратная сторона: все запросы на обработку фильтром ASP.NET ISAPI, включая статические файлы, такие как изображения, javascript и т. д.
Вот отличный пост в блоге от Фила Хаака о различных вариантах настройки ASP.NET MVC на IIS 6. Инструкции по подстановочным знакам примерно на полпути.
Обратите внимание, что сопоставления ISAPI с подстановочными знаками больше не требуются с .NET 4.0: http://blogs.msdn.com/b/tmarq/archive/2010/04/01/asp-net-4-0-enables-routing-of-extensionless-urls-without-impacting-static-requests.aspx