ASP.NET MVC:Создание маршрутов/URL-адресов, дружественных к IIS6 и IIS7
-
01-07-2019 - |
Вопрос
У меня есть приложение ASP.NET MVC, которое я хочу развернуть как в IIS6, так и в IIS7, и, как мы все знаем, IIS6 требует именования «.mvc» в URL-адресе.
Будет ли этот код работать, чтобы убедиться, что он работает на всех версиях IIS?Без необходимости внесения специальных изменений в код, global.asax или файлы конфигурации для разных версий IIS.
bool usingIntegratedPipeline = HttpRuntime.UsingIntegratedPipeline;
routes.MapRoute(
"Default",
usingIntegratedPipeline ?
"{controller}/{action}/{id}" : "{controller}.mvc/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
Обновлять:Забыл упомянуть.Нет ISAPI.Размещенный сайт, никакого контроля над IIS-сервером.
Решение
Это должно решить проблему .mvc, поскольку интегрированный конвейер строго соответствует IIS7.Но не забудьте изменить настройки на веб-сайте IIS7, чтобы использовать «2.0 Integrated Pipeline», иначе он также вернет false.Также, конечно, настройте сопоставление .mvc с dll asp.net isapi, но я предполагаю, что вы это уже знаете.
Несколько небольших советов о других вещах, которые вам, возможно, придется запомнить при развертывании приложений 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
Другие советы
Вы можете использовать фильтр ISAPI для перезаписи URL-адресов, что позволит вам иметь хорошие URL-адреса, пока вы еще используете IIS 6.
Посмотрите, например, здесь