Как очистить унаследованные элементы customErrors в Web.config?

Как говорится в статье Иерархия и наследование файлов конфигурации ASP.NET

файл Web.config для конкретного веб-сайта содержит параметры, которые применяются к веб-сайту и наследуются вниз через все приложения и подкаталоги ASP.NET сайта.

У меня эти настройки для "родительского" приложения

<customErrors mode="RemoteOnly" defaultRedirect="GenericError.htm">
    <error statusCode="403" redirect="NoAccess.htm" />
    <error statusCode="404" redirect="FileNotFound.htm" />
    <error statusCode="500" redirect="InternalError.htm" />
</customErrors>

но нужны только они для "дочернего" приложения

<customErrors mode="RemoteOnly" />

В статье также говорится

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

Но, к сожалению, это по какой-то причине незаконно

<customErrors mode="RemoteOnly">
    <clear/>
<customErrors/>

Итак, вопрос в том, как очистить унаследованные элементы customErrors?


person Alexander Prokofyev    schedule 23.09.2009    source источник


Ответы (2)


Вы пытались добавить XML-элемент inheritInChildApplications = "false" в файл web.config вашего родителя (верхнего уровня)?

<location inheritInChildApplications=”false”>

ссылка: - http://www.west-wind.com/WebLog/posts/133041.aspx

person Jim W    schedule 23.09.2009
comment
Следует отметить, что изменение родителя также повлияет на всех остальных дочерних элементов, а не только на рассматриваемое приложение. - person G. Stoynev; 15.10.2020

CustomErrors не является коллекцией, как другие параметры конфигурации - вы не <add /> обработчики ошибок, поэтому вы не можете их очистить - действительно, глядя в документацию, единственным дочерним элементом элемента CustomeErrors является <error>.

Кроме того, установив для дочернего приложения RemoteOnly, вы не предоставляете никаких пользовательских ошибок для отображения удаленным пользователям - действительно ли вы этого хотите? Разве вы не должны по крайней мере предоставить другой DefaultRedirect? В противном случае вы будете показывать пользователям бесполезный желтый цвет. Произошла ошибка, но я не могу показать вам страницу с подробностями.

person Zhaph - Ben Duguid    schedule 23.09.2009
comment
Я использую ASP.NET MVC HandleErrorAttribute для установки настраиваемой страницы ошибок. - person Alexander Prokofyev; 06.10.2009