Это иерархия для конфигурации ASP.NET. Возможно, это поможет понять, какие настройки перезаписывают друг друга.
Сервер
Machine.config: файл Machine.config содержит схему ASP.NET для всех веб-приложений на сервере. Этот файл находится в верхней части иерархии слияния конфигурации.
Root Web
Web.config: файл Web.config для сервера хранится в том же каталоге, что и файл Machine.config, и содержит значения по умолчанию для большинства разделов конфигурации system.web. Во время выполнения этот файл объединяется вторым сверху в иерархии конфигурации.
Веб-сайт
Web.config. Файл Web.config для определенного веб-сайта содержит параметры, которые применяются к веб-сайту и наследуются всеми приложениями и подкаталогами сайта ASP.NET.
корневой каталог приложения ASP.NET
Web.config. Файл Web.config для конкретного приложения ASP.NET находится в корневом каталоге приложения и содержит параметры, которые применяются к веб-приложению и наследуются вниз по всем подкаталогам в его ветви.
Подкаталог приложения ASP.NET
Web.config: файл Web.config для подкаталога приложения содержит параметры, которые применяются к этому подкаталогу и наследуются вниз по всем подкаталогам в его ветви.
Каталог клиентских приложений
ApplicationName.config: файл ApplicationName.config содержит настройки для клиентского приложения Windows (не веб-приложения).
Понимание того, какие файлы и папки ASP.NET наследуются через папки и приложения, очень важно для разработки и устранения неполадок.
Вот краткое резюме:
- Файлы web.config наследуются по всему дереву, за пределами всех границ приложения.
- global.asax живет только внутри своего приложения
- / bin и / app_ {папки} живут только внутри своего приложения
Таким образом, это означает, что все, что установлено в корневом файле web.config, наследует весь сайт, даже если некоторые папки помечены как приложения.
В этом случае возникает проблема, если в файле web.config есть ссылки на сборки, но в подпрограммах таких сборок нет. Например, предположим, что у вас есть HTTP-модуль, настроенный в корне сайта и указанный в файле site.config сайта. Если у вас есть вложенное приложение с именем / subfolder, которое помечено как приложение, то / subfolder попытается загрузить обработчик HTTP из / subfolder / bin. Так как он не существует, будет сгенерирована ошибка.
Есть несколько способов обойти это. Вероятно, самым чистым, если в подпапке / не требуется HTTP-обработчик, является «удаление» ссылки путем добавления предложения в файл /subfolder/web.config. Вы можете сделать это с. Вот пример того, как удалить модуль HTTP в подпапке:
<httpModules>
<remove name="ErrorLog"/>
</httpModules>
Вот как может выглядеть сайт web.config:
<httpModules>
<add name="ErrorLog" type="GotDotNet.Elmah.ErrorLogModule, GotDotNet.Elmah, Version=1.0.5527.0, Culture=neutral, PublicKeyToken=978d5e1bd64b33e5" />
</httpModules>print("code sample");