【问题标题】:How to clear inherited customErrors elements in Web.config?如何清除 Web.config 中继承的 customErrors 元素?
【发布时间】:2010-11-30 18:22:19
【问题描述】:

正如文章ASP.NET Configuration File Hierarchy and Inheritance所说

特定网站的 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 子元素的键名, 或者整个集合可以是 通过 clear 子元素清除。一个 在子配置中添加设置 文件覆盖相同的设置 父配置中的键名 文件,除非允许重复。

但不幸的是,由于某种原因这是非法的

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

那么问题是如何清除继承的customErrors元素?

【问题讨论】:

    标签: asp.net inheritance web-config custom-errors


    【解决方案1】:

    您是否尝试将 inheritInChildApplications="false" XML 元素添加到您父母的(顶级)web.config 中?

    <location inheritInChildApplications=”false”>
    

    参考: - http://www.west-wind.com/WebLog/posts/133041.aspx

    【讨论】:

    • 应该注意的是,更改父级也会影响所有其他“子级”,而不仅仅是相关应用程序。
    【解决方案2】:

    CustomErrors 不像其他配置设置那样是一个集合 - 你不是 &lt;add /&gt; 错误处理程序,所以你不能清除它们 - 实际上查看文档,CustomeErrors 元素的唯一子项是&lt;error&gt;.

    此外,将子应用程序设置为“RemoteOnly”后,您并没有提供任何自定义错误来显示给远程用户 - 这真的是您想要的吗?您至少不应该提供不同的 DefaultRedirect 吗?否则,您将向用户显示无用的黄色“出现错误,但我无法向您显示详细信息”页面。

    【讨论】:

    • 我使用 ASP.NET MVC HandleErrorAttribute 来设置自定义错误页面。
    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 2015-01-07
    • 2015-07-24
    • 2010-10-27
    • 2010-12-07
    • 2011-11-08
    • 2016-05-24
    相关资源
    最近更新 更多