0

正如文章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" />

文章还说

在集合中,配置设置通常通过添加子元素添加到集合中,通过删除子元素按键名删除,或者可以通过清除子元素清除整个集合。除非允许重复,否则子配置文件中添加的设置会覆盖父配置文件中相同键名的设置。

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

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

所以问题是如何清除继承的 customErrors 元素?

4

2 回答 2

1

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

<location inheritInChildApplications=”false”&gt;

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

于 2009-09-23T22:28:38.523 回答
0

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

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

于 2009-09-23T22:52:38.427 回答