Ошибка использования раздела, зарегистрированного как allowDefinition = 'MachineToApplication' за пределами уровня приложения - PullRequest
176 голосов
/ 16 февраля 2012

Ошибка использовать раздел, зарегистрированный как allowDefinition = 'MachineToApplication' за пределами уровня приложения.

Верхняя строка на всех моих страницах aspx в моем каталоге / portal / имеетэто сообщение об ошибке, и я знаю, что оно распространено.Я погуглил это сообщение об ошибке без конца, и я вижу много постов, в которых говорится о настройке папки / portal / как приложения в IIS (которое у меня есть), и больше постов, в которых говорится, что я вложил web.configs (нони одна из публикаций не предлагает руководства по решению).

Моя настройка заключается в том, что у меня есть web.config в моем корневом каталоге, а затем я пытаюсь создать портал компании в каталоге / portal /,Каталог / portal / имеет свой собственный (необходимый) web.config.

Моя строка 50 файла web.config выглядит следующим образом:

    <customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
    <anonymousIdentification enabled="true"/>
    <authentication mode="Forms"/>
    <membership defaultProvider="MyProvider">

Итак, у меня есть domain.com/web.config AND domain.com/portal/web.config ... так что мойСтраница domain.com/portal/default.aspx не будет загружаться.

Каково реальное решение для этого?Как-нибудь найти способ объединить мой корневой web.config с моим / portal / directory web.config, или я здесь далеко от базы?

Будем весьма признательны за любые указания!

Ответы [ 25 ]

203 голосов
/ 16 февраля 2012

только для справочной информации;Информация о конфигурации веб-сайта ASP.NET определяется в одном или нескольких файлах Web.config.Параметры конфигурации применяются иерархически.Существует «глобальный» файл Web.config, в котором изложена информация о базовой конфигурации для всех веб-сайтов на веб-сервере;этот файл находится в папке %WINDIR%\Microsoft.Net\Framework\version\CONFIG.Вы также можете иметь файл Web.config в корневой папке вашего сайта.Этот файл Web.config может переопределять настройки, определенные в «глобальном» файле Web.config, или добавлять новые.Кроме того, у вас могут быть файлы Web.config во вложенных папках вашего веб-сайта, которые определяют новые параметры конфигурации или переопределяют параметры конфигурации, определенные в файлах Web.config выше в иерархии.

Некоторые элементы конфигурации в Web.configне может быть определено за пределами уровня приложения, что означает, что они должны быть определены в «глобальном» файле Web.config или в файле Web.config в корневой папке веб-сайта.Элемент <authentication> является одним из таких примеров.Приведенное выше сообщение об ошибке указывает, что в одной из подпапок веб-сайта есть файл Web.config, в котором есть один из этих элементов конфигурации, который нельзя определить за пределами уровня приложения.

Источник: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

Вы правильно определили 2 возможных подхода.

1 - В зависимости от содержимого вашего второго web.config и, если ваша настройка разрешит (то есть тот же метод аутентификации), - добавьте настройки <authentication> и любые другие элементы, которые должны быть определены глобально, в верхнюю сеть.config

2 - Если вы не можете объединить содержимое web.config, то вы сможете превратить эту подпапку в веб-приложение в IIS, выполнив действия, указанные в приведенной ниже ссылке на архивную ссылку.Исходная ссылка больше не работает.(см. в архиве ) Надеюсь, это поможет.

59 голосов
/ 24 сентября 2013

Для чего бы то ни было, я получил сообщение об ошибке: «Ошибка использовать раздел, зарегистрированный как allowDefinition =« MachineToApplication », за пределами уровня приложения».и в итоге решил его, очистив каталоги \ myWebApp \ obj \ Debug и \ myWebApp \ obj \ Release.Мне также нужно было установить начальную страницу по умолчанию.Но затем приложение запустилось нормально.НТН.

57 голосов
/ 21 ноября 2012

Как говорит RY4N выше, проблема не обязательно в файле web.config в папке Project. В некоторых случаях я обнаружил, что запуск сборки под профилем Debug оставит детрит в папке Debug соответствующего проекта. Здесь часто присутствует файл web.config, который приводит к указанной выше ошибке при последующем запуске сборки в профиле выпуска.

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

21 голосов
/ 29 мая 2012

Это также происходило на моем домашнем компьютере, но ТОЛЬКО когда я включил Build Views в конфигурацию выпуска и собрал конфигурацию выпуска. Иначе этого не произошло.

Несмотря на то, что опция Build Views очень хороша, я отключил ее, потому что эта «ошибка» всегда всплывала и не позволяла запустить приложение.

12 голосов
/ 02 мая 2012

Просто сказать

При обновлении (например, 2008 -> 2010) Проект Visual Studio создаст резервную копию (если вы разрешите) в решении проекта, которое добавлено в новое решение. , Старый Webconfig - это то место, откуда может появиться указанная выше ошибка.

" Файл Web.config в одной из подпапок веб-сайта, кроме одного из этих элементов конфигурации, которые нельзя определить за пределами уровня приложения. " @ benni_mac_b

Чтобы исправить это: Просто удалите резервную копию папки из проекта и решения, в этом сценарии.

11 голосов
/ 06 июня 2014

У меня есть другая возможная причина, по которой это происходит.

У меня было более старое веб-приложение, встроенное в 2.0.Я перенес его на решение 4.5.

Приложение прекрасно создавалось и отлаживалось внутри Visual Studio, но затем, когда я пытался опубликовать веб-приложение, эта ошибка возникала снова и снова.

Наконец, я обнаружил, что проблема заключалась в том, что Build Action для файла web.config был «Встроенный ресурс», а не «Содержимое».Кроме того, для параметра «Копировать в выходной каталог» было установлено «Всегда копировать», а не «Не копировать».Я не знаю, когда были сделаны эти настройки, но я верю, что это было в версии 2.0 приложения.

Изменение параметров файла web.config позволило безупречно работать действию публикации в публикации Visual Studio 2012.

10 голосов
/ 15 ноября 2014

У меня была такая же проблема в проекте MVC.Произошла ошибка при попытке публикации.Оказалось, что папка obj должна быть пустой (или, по крайней мере, не содержать web.config).

Запуск Clean не помог мне.

Я решил проблему с помощьюочистка папки obj перед любой сборкой (в моем случае сборка проекта в любом случае не займет много времени).

Я выгрузил проект и добавил следующее в BeforeBuild Target

<Target Name="BeforeBuild">
    <Delete Files="$(SolutionDir)\$(ProjectDir)\bin\**\*.*" />
    <Delete Files="$(SolutionDir)\$(ProjectDir)\obj\**\*.*" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\bin" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\obj" />
    <Message Text="Clean obj/bin from web project" />
</Target>

Надеюсь, это поможет

6 голосов
/ 29 марта 2016

"Ошибка использовать раздел, зарегистрированный как allowDefinition = 'MachineToApplication' за пределами уровня приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не был настроен как приложение в IIS."

У меня былэта проблема в VS.NET.Оказалось, что когда я настраивал некоторые преобразования конфигурации, я по ошибке установил свойство файла Web.config «Копировать всегда».Я обычно устанавливаю для моих файлов преобразования значение «Копировать всегда», но оставляю корневой файл web.config как «Не копировать».

Будьте осторожны, поскольку изменение свойств файла web.config также изменяет все вложенные преобразования.

Итак, чтобы исправить:

1) Измените web.config на "Не копировать"

2) При необходимости, если вы используете преобразования конфигурации, установите ихв «Копировать всегда»

3) Удалите папки obj и bin из решения (они могут не отображаться, поэтому выберите узел проекта в обозревателе решений и нажмите кнопку панели инструментов «Показать все файлы».

4) Опубликовать

У меня сработало.

5 голосов
/ 22 декабря 2014

Я столкнулся с этой ошибкой только во время публикации приложения.

Свойства файлов web.config (и преобразований) были установлены следующим образом:

  • Build Action - None
  • Copy to Output - Always.

Решением было изменить настройки на:

  • Build Action - Content
  • Copy to Output - Do not Copy
4 голосов
/ 10 апреля 2014

У меня также была эта проблема, и она возникла после того, как я использовал Мастер публикации для публикации своего сайта в Интернете.

После долгих размышлений я наткнулся на этот отчет об ошибках на сайте Connect, https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level

Ответ MS ответил, а также объяснил, почему эта проблема возникла при публикации, он также включил временный обходной путь, который решил эту проблему для меня.

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