2010-05-26 7 views
3

Что я делаю СЛЕДУЕТ быть простым. В IIS6 я могу просто перейти в «Свойства на веб-сайте» и «Создать/удалить статус приложения». Тем не менее, я не могу на всю жизнь понять, как конвертировать сам веб-сайт (а не виртуальные каталоги под ним) приложение!Сделать веб-сайт IIS7.5 с помощью приложения

В конечном счете, моя проблема заключается в использовании функции публикации из Visual Studio 2010, поскольку она дает мне эту ошибку: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. Я предполагаю, что это связано с тем, что веб-сайт не настроен как приложение.

Если я создаю виртуальный каталог под своим веб-сайтом и продвигаю его в приложение (щелкнув его правой кнопкой мыши и выбрав Convert to Application), тогда все будет в порядке. Но я просто не могу понять, как это сделать на самом веб-сайте, и мне нужно это сделать, потому что мне нужен этот сайт MVC2, размещенный по адресу www.domain.com/, а не www.domain.com/appname/. Неужели я все это делаю неправильно? Я использую VS2010 неправильно или мне не хватает опции в IIS?

ответ

2

Я решил свою проблему. Оказывается, проблема не имеет ничего общего с IIS и ее конфигурацией или что-то в этом роде, а вместо этого является бипроводом того, как VS2010 публикует веб-приложения.

Как и большинство из нас, мы действительно не отлаживаем приложения под Cassini - вместо этого мы используем IIS, указывающие на наш исходный код, который мы постоянно меняем. Ну, с настройками по умолчанию функции публикации, VS2010 делает компиляцию приложения (и зависимостей) и копирует соответствующие файлы в папку под специальным подкаталогом, называемым «obj» внутри корневого местоположения вашего проекта. Включенный внутри этой «копии» веб-приложения, который он собирается попытаться развернуть, должен быть развернутым файлом web.config. Этот файл конфигурации включает в себя вещи, которые должны быть в файле web.config в корне приложения. Но имейте в виду, что наш исходный код находится внутри приложения IIS. Поэтому, как только этот файл сгенерирован (после того, как мы скомпилировали/построили выпуск), мы теперь нарушаем требования IIS на нашей машине dev/build.

Так что все хорошо и хорошо, пока VS успешно публикует приложение и удаляет эту временную копию. Единственная проблема заключается в том, что VS не удаляет эту временную копию (в ~/obj/Release/Package/PackageTmp), является ли она успешной или нет. Поэтому, как только вы пытаетесь опубликовать один раз, вы не можете успешно скомпилировать свое приложение без этой ошибки, намекая на проблему в конфигурации IIS, и эта ошибка предотвратит публикацию в будущем.

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