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

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

Верхняя строка на всех моих страницах aspx в каталоге my/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, или я здесь отсюда?

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

Ответ 1

Только для справочной информации; Информация о конфигурации для веб-сайта 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

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

Ответ 6

Я придумал еще одну возможную причину, по которой это происходит.

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

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

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

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

Ответ 7

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

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

Ответ 8

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

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

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

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

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

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

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

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

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

Ответ 9

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

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

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

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

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

Ответ 10

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

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

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

Ответ 11

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

Ответ 12

Щелкните файл Web.config в обозревателе решений, щелкните правой кнопкой мыши "Свойства" и выберите "Копировать в выходной каталог: не копировать".

enter image description here

Ответ 13

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

Ответ 14

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

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

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

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

Ответ 15

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

Ответ 16

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

из vs: Build > Clean Solution

затем перестроить.

Ответ 17

Windows start → open Sites → IIS → щелкните правой кнопкой мыши ваш сайт → Управление веб-сайтом → Настройки предварительного доступа → просмотр физического пути → выберите подкаталог того, как вы сейчас выбираете.

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

Ответ 18

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

Решение:

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

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

Ответ 19

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

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

Ответ 20

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

Ответ 21

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

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

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

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

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

Ответ 22

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

Ответ 23

Иногда простой ответ является лучшим. У меня было два файла web.config в моем проекте. На основном уровне я должен был внести изменения, чтобы справиться с моим тайм-аутом сеанса (который вызвал эту проблему). У меня был отдельный файл конфигурации в моей директории Razor Views, в котором были настройки для Razor и его представлений. Я добавил там раздел (не на уровне приложения!). Не осознавая, что у меня есть два отдельных файла web.config, я попробовал все, кроме поиска очевидного.

Ответ 24

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

Ответ 25

Я получил эту ошибку на localhost в Visual Studio 2017, и простой перезапуск Visual Studio устранил проблему.

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