ASP.NET MVC:Создание маршрутов/URL-адресов, дружественных к IIS6 и IIS7

StackOverflow https://stackoverflow.com/questions/109044

Вопрос

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top