ASP.NET MVC: создание маршрутов / URL-адресов для IIS6 и IIS7-дружественных - PullRequest
3 голосов
/ 20 сентября 2008

У меня есть ASP.NET MVC-приложение, которое я хочу развернуть как на IIS6, так и на IIS7, и, как мы все знаем, IIS6 нуждается в имени .mvc в URL.

Будет ли этот код работать, чтобы он работал на всех версиях IIS? Без необходимости вносить специальные изменения в код, global.asax или config-файлы для разных IIS-версий.

bool usingIntegratedPipeline = HttpRuntime.UsingIntegratedPipeline;

routes.MapRoute(
    "Default",
    usingIntegratedPipeline ?
        "{controller}/{action}/{id}" : "{controller}.mvc/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

Обновление : Забыл упомянуть. Нет ISAPI. Размещенный веб-сайт, без контроля над IIS-сервером.

Ответы [ 2 ]

3 голосов
/ 20 сентября 2008

Это должно исправить проблему .mvc, поскольку интегрированный конвейер строго IIS7. Но не забудьте изменить настройки на веб-сайте IIS7, чтобы использовать «Интегрированный конвейер 2.0», иначе он вернет false false. Также можно настроить отображение .mvc на asp.net isapi dll, но я предполагаю, что вы уже знаете это.

Несколько небольших советов о других вещах, которые вы, возможно, должны помнить при развертывании приложений MVC на IIS6, которые я считаю полезными: http://msmvps.com/blogs/omar/archive/2008/06/30/deploy-asp-net-mvc-on-iis-6-solve-404-compression-and-performance-problems.aspx

0 голосов
/ 20 сентября 2008

Вы можете использовать фильтр ISAPI для перезаписи URL-адресов, что позволит вам иметь хорошие URL-адреса, пока они находятся в IIS 6.

Посмотрите, например, здесь

...