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

Ошибка использовать раздел, зарегистрированный как 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 И domain.com/portal/web.config... поэтому моя страница domain.com/portal/default.aspx не будет загружаться.

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

Любое руководство будет с благодарностью!

31 ответ

Решение

Просто для справочной информации; Информация о конфигурации веб-сайта 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> настройки и любые другие элементы, которые должны быть определены глобально в верхней части web.config

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

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

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

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

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

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

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

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

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

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

У меня была такая же проблема в проекте 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>

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

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

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

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

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

Изменение параметров файла web.config позволило безошибочно работать публикации "Публикация в Visual Studio 2012".

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

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

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

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

  • Build Action - Content
  • Copy to Output - Do not Copy

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

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

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

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

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

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

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

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

Работал на меня.

Нажми на Web.config файл из обозревателя решений и изменения

Копировать в выходной каталог = не копировать

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

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

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

Удалите и создайте виртуальный каталог снова. Щелкните правой кнопкой мыши и преобразуйте виртуальный каталог в "Приложение".

Вот еще одна причина - если вы скопируете все ваше веб-приложение в одну из его собственных подпапок, вы получите эту ошибку. Мне удалось сделать это на старом сайте при копировании с одного компьютера на другой - просто попросили посмотреть сайт после 2-х летнего промежутка и произошла ошибка. Потребовалось немало времени для выяснения - у меня не было нескольких конфигурационных файлов.

У меня возникла та же проблема, когда я публиковал сайт, если я создаю сайт, у меня не возникает проблем, но при публикации я получаю эту ужасную ошибку:

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

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

Надеюсь, это кому-нибудь поможет!!

У меня была эта проблема, и она была решена путем очистки моего решения от старых сборок и т. Д.

от vs: Build > Чистое решение

затем восстановить.

Для меня причина была в том, что папка obj находилась в папке веб-сайта, и после создания различных конфигураций появилось несколько файлов web.config. Я решил проблему под vs2012, переместив папку obj с веб-сайта. Для этого я добавил вручную (в блокноте) $(SolutionDir)\Obj\$(Configuration) к каждой конфигурации в файле проекта веб-сайта.

Пуск в Windows -> открыть Сайты -> IIS -> щелкните правой кнопкой мыши по своему сайту -> Управление веб-сайтом -> Дополнительные настройки -> выберите Физический путь -> попробуйте выбрать подпапку, которая выбрана в данный момент.

логика заключается в том, что файл веб-конфигурации внутри подпапки пытается внести изменения, и это запрещено, это должна быть выбранная папка: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

I received this error on localhost in Visual Studio 2017, and a simple restart of Visual Studio cleared the issue.

I realise this issue can also be caused by having more than one web.config; one within a sub-folder for example. if you do have multiple web.config files purposely for another application: ensure the directory is not being seen as a virtual directory.

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

Решение:

  1. Вы должны удалить некоторые вкладки конфигурации, такие как: профиль, членство, roleManager, sessionState в sub web.config
  2. Измените Аутентификацию на Нет как: <authentication mode="None" />
  3. И перейдите в IIS, щелкните правой кнопкой мыши подпапку -> Добавить приложение.
  4. Перезагрузите IIS, чтобы решить эту проблему.

Если есть другие вопросы, не стесняйтесь пинговать меня, может быть, я найду, чтобы помочь.

Это было хорошо на localhost но когда я опубликовал релиз на сервере, я запустил ту же ошибку для нескольких страниц. Затем я очистил решение и перестроил и опубликовал, все было исправлено.

Проверьте путь к файлу web.config, который открывается при нажатии на ошибку. Некоторые модули node_module (node_module\selenium_webdriver\lib\test\data\web.config) также могут иметь файл web.config.

Удалите obj и bin напрямую, немедленно исправив эту проблему.

Я получил эту ошибку иначе, чем все остальные:

Я перешел с vs2010 с проектом веб-развертывания на vs2012 и новый профиль веб-публикации.

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

Это вызвало ошибку во время публикации, которая сначала озадачила меня, потому что я публиковал в файловой системе, а не в IIS (я думал).

Решением было изменить публикацию в папке за пределами веб-проекта.

Сравнивая проект, который работал, с проектом, в котором была описанная выше проблема, я внес следующее изменение. Это решило мою проблему.

Из:

        <Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
  </Target>

К:

        <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
  </Target>

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

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

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

Удалив этот файл из папки /backup/, ошибка была устранена.

На практике я полагаю, что это ничем не отличается от комментариев другого участника об удалении всей папки Debug.

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

В моем случае я обнаружил, что у меня есть еще один файл Web.config в старой папке внутри веб-приложения. Я просто удаляю старый файл web.config, и все в порядке.

Моей ошибкой было случайное копирование при вставке файла web.config в другую папку на веб-сервере

Убедитесь, что вы не попали в ловушку неправильного доступа к вашему локальному сайту через localchost/mysite.test, который должен быть mysite.test, который выдаст вам эту ошибку.

Когда вы заходите на свой сайт как localhost / dir_name, в этом случае ваш web.conf падает ниже корневого уровня и, следовательно, эта ошибка.

Другие вопросы по тегам