ASP.NET MVC: создание маршрутов / URL-адресов для IIS6 и IIS7

У меня есть приложение 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-сервером.


person Seb Nilsson    schedule 20.09.2008    source источник


Ответы (2)


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

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

person user19264    schedule 20.09.2008

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

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

person alex    schedule 20.09.2008