Почему я случайно получаю «ошибку при использовании раздела, зарегистрированного как allowDefinition = 'MachineToApplication'» при создании проекта MVC? - PullRequest
15 голосов
/ 27 января 2010

Я видел несколько вопросов на SO о похожей ошибке при развертывании веб-сайта, но я, кажется, случайно получаю эту ошибку при сборке веб-сайта ASP.NET MVC в Visual Studio. Выполнение очистки обычно исправляет это, но есть ли способ избежать этого полностью?

Ошибка использовать раздел, зарегистрированный как allowDefinition = 'MachineToApplication', за пределами уровня приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS. d: ... \ OBJ \ Debug \ пакет \ packagetmp \ web.config

Обратите внимание, что он жалуется на корень web.config, а не на подкаталог Views.

Ответы [ 4 ]

15 голосов
/ 10 апреля 2010

Я предполагаю, что вы используете функцию публикации. Я получаю эту ошибку при использовании публикации в каталоге файлов.

При публикации вашего приложения создается временная копия вашего приложения в каталоге \obj\debug\package\packagetmp\web.config.

Этот web.config сбивает с толку IDE, которая считает, что это приложение, но не находится в виртуальном каталоге, поэтому вы получаете сообщение об ошибке.

Обход:

Это простой обходной путь, чтобы добавить это к команде перед сборкой:

 del "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config"

Неудачные обходные пути:

  • Изменение каталога для «Местоположения, в котором будет создан пакет» в настройках «Пакет / Публикация в Интернете», похоже, не даст никакого эффекта - даже если вы проявите смекалку и попытаетесь поместить его вне корня проекта с помощью ......

  • Создание действительного виртуального каталога в IIS для «PackageTmp» также не помогло исправить это!

ПРОБЛЕМА СОЕДИНЕНИЯ:

http://connect.microsoft.com/VisualStudio/feedback/details/503254/web-config-in-package-folder-makes-it-impossible-to-compile-debug

Надеюсь, они исправят это в RC!

9 голосов
/ 28 января 2011

Мне не удалось заставить работать другой обходной путь, но мне показалось, что следующее событие перед сборкой сработало:

rmdir /s /q "$(ProjectDir)obj\Debug\Package"
rmdir /s /q "$(ProjectDir)obj\Debug\TransformWebConfig"
rmdir /s /q "$(ProjectDir)obj\Release\Package"
rmdir /s /q "$(ProjectDir)obj\Release\TransformWebConfig"
2 голосов
/ 02 декабря 2011

I ответил недавно на похожий вопрос, и похоже, что он может быть связан.

Подводя итог, я столкнулся с этим в одном из наших проектов MVC, и это было связано с тем, что свойство MvcBuildViews в файле проекта установлено на true. Установка свойства false устранила проблему.

<MvcBuildViews>false</MvcBuildViews>

Я также нашел этот ответ , в котором описывается альтернатива, не требующая выключения вида здания.

0 голосов
/ 25 марта 2017

Вы можете безопасно поместить эту целевую сборку в конец вашего файла .csproj и оставить MvcBuildViews до true.

Удаляет папку obj перед началом сборки ...

  <Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
  </Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...