Главная страница   /   21.4. IIS 6 и 5.1 (ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

Джеффри Палермо

21.4. IIS 6 и 5.1

В рамках предыдущих версий ASP.NET MVC для развертывания на более ранние версии IIS необходимо было выполнять значительно больше настроек. IIS 6 по умолчанию не поддерживало отсутствие расширений URL.

Существовало несколько способов обхода этой ситуации. Самым простым способом было добавление в IIS механизма преобразования посредством подстановок, которое подразумевало, что все запросы к веб-серверу проходили бы через конвейер ASP.NET. Недостатком этого подхода было то, что это могло снизить качество функционирования, особенно при обслуживании статических файлов. Существуют механизмы обхода этого (например, выборочно отключить механизм преобразования посредством подстановок для конкретных подкаталогов), но они, возможно, предполагают большое количество дополнительных настроек.

В противном случае вы могли бы добавить преобразование с помощью скрипта для определенного расширения файла (например, .mvc), а затем использовать это расширение файла для всех ASP.NET MVC запросов. Для этого требуется, чтобы все определения роутов в вашем приложении были модифицированы так, как показано ниже.

Листинг 21-2: Настройка роута с помощью .mvc расширения
routes.MapRoute(
		"Default",
		"{controller}.mvc/{action}/{id}",
		new
		{
			controller = "Product",
			action = "List",
			id = UrlParameter.Optional
		}
);

Строка 3: Расширение .mvc, вставленное после controller

Недостатком этого подхода являются "некрасивые" URL (например, http://mysite.com/Home.mvc/Index) и то, что это усложняет процесс использования одинакового кода для составных версий IIS (например, локальная разработка на IIS 7 наряду с включенной возможностью отсутствия расширений URL, а затем развертывание на IIS 6 без них).

К счастью, ничего из этого не нужно сейчас. Начиная с релиза ASP.NET 4, отсутствие расширений в URL теперь доступно и в IIS 6 без какой-либо дополнительной настройки. Это означает, что если вы развертываете его на сервере, все еще запускаемом на IIS 6, то развертывание должно быть таким же прямолинейным, как и в IIS 7. Единственное, что вы должны сделать, – убедиться, что ASP.NET 4 подключен для вашего сервера, что может быть выполнено путем перехода в режим Web Service Extensions в IIS 6 Manager при помощи нажатия правой кнопки мыши на ASP.NET v4 и выбором Allow, как это продемонстрировано на рисунке 21-7

Рисунок 21-7: Подключение ASP.NET 4 в IIS 6 Manager

К несчастью, возможность отсутствия расширений в URL не работает в IIS 5.1, поэтому если вы все еще запускаете Windows XP на той машине, на которой занимаетесь разработкой приложения, то вы не сможете использовать механизм отсутствия расширений в URL без добавления механизма преобразования посредством подстановок. Но есть лучшая альтернатива – IIS Express.

IIS Express – сокращенная версия IIS 7.5, которая может быть установлена как часть Visual Studio 2010 с помощью Web Platform Installer, и это позволяет вам запускать современную версию IIS для локальной разработки, даже если вы работаете в устаревшей операционной системе, которая не поддерживает современные версии IIS. После установки IIS Express вы можете перенастроить ваше приложение для использования IIS Express путем выбора в Visual Studio пункта Use IIS Express в меню Project, как это продемонстрировано на рисунке 21-8.

Рисунок 21-8: Настройка проекта для локального использования IIS Express с помощью меню Project

На данный момент мы рассмотрели настройку IIS 7 для хостинга MVC приложений, а также вкратце обсудили IIS 6. Но вместо хостинга на вашем собственном аппаратном обеспечении вам может потребоваться использование преимуществ одной из разнообразных платформ облачного хостинга. В следующем разделе мы изучим, что входит в развертывание MVC приложения на облачной платформе компании Microsoft, Azure.