Настройка IIS 7.5 и ASP .NET 4

Unrecognized element 'folderLevelBuildProviders'

В ходе разработки моего текущего веб-проекта мне понадобилось показать заказчику промежуточный результат. До этого времени для локального тестирования я использовал бету IIS Express: это урезанная версия «взрослого» сервера IIS, созданная специально для разработчиков. Только вот незадача: IIS Express ни в какую не желал давать к себе доступ из внешнего мира. Уговорить мне его так и не удалось, поэтому было найдено временное решение в виде хостинга Cytanium. Они предоставляют для теста самые новые технологии от Microsoft, причём совершенно бесплатно. Всё бы хорошо, да только появилась другая проблема: заказчик стабильно ловил какой-то хитрый баг, который я, хоть тресни, не мог воспроизвести. Оставалось только одно: поднять у себя полномасштабный IIS и попросить заказчика воспроизвести баг, поджидая его за углом с дебаггером наперевес.

Установка IIS прошла легко и просто. Следуя здравому смыслу, я поменял рантайм для дефолтного пула приложений на версию 4, и проверил, назначен ли этот пул дефолтному сайту.

Ничто не предвещало беды, когда я деплоил свой проект и пытался натравить на него браузер. Ага. «Если что-то идёт слишком хорошо, готовь ведро вазелина» — гласит народная программистская мудрость. “The Web server is configured to not list the contents of this directory” — в тон ей бодро рапортовал IIS и ткнул меня мордой в ошибку 403.14. «оО» — сказал я. Какой, нафиг, директори листинг, если запрос должен подцепиться системой роутинга ASP .NET?! Подозревая неладное, я решил наведаться в .NET Compilation дефолтного сайта, и вот тут-то меня и встретила ошибка, вывешенная в начале статьи: “Unrecognized element 'folderLevelBuildProviders'” — сказал мне сервер человеческим голосом.

Не буду описывать долгого гугления, плясок с бубном и воскурения мануалов, а перейду сразу к решению. Дело в том, что если IIS ставится после .NET Framework, в нём не создаётся пул приложений ASP .NET, который как раз и нужен для работы веб-сервисов.

Стандартные пулы

Чтобы зарегистрировать ASP .NET в IIS, нужно выполнить хитрую команду aspnet_regiis. Очевидно, правда ведь? :)  Итак, переходим в папку c:\Windows\Microsoft.NET\Framework\v4.0.30319\ и выполняем заветную команду:


aspnet_regiis -i -enable

После непродолжительных раздумий нам скажут, что всё чики-пуки, и мы сможем лицезреть два новых пула:

Новые пулы

Осталось только выбрать пул “ASP .NET v4.0” для дефолтного сайта:

Выбираем правильный пул

Problema finita! После этих нехитрых манипуляций мы спокойно можем зайти в “.NET Compilation” и запускать сервисы, написанные на ASP .NET 4 8) .