Сделать веб-сайт IIS7.5 приложением - PullRequest
3 голосов
/ 26 мая 2010

То, что я делаю, ДОЛЖНО быть простым. В IIS6 я мог просто зайти в Свойства на веб-сайте и создать / удалить статус приложения из него. Тем не менее, я не могу понять, как преобразовать сам веб-сайт (а не виртуальные каталоги под ним) в приложение!

В конечном счете, моя проблема заключается в использовании функции публикации из 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?

1 Ответ

2 голосов
/ 26 мая 2010

Я решил свою проблему. Оказывается, проблема не имеет ничего общего с 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 (имеет другие потенциальные преимущества). В общем, это была очень запутанная проблема с некоторыми довольно простыми обходными путями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...