IIS 7.5=嵌套的web.config将不会覆盖应用程序级web.config中设置的自定义错误处理

IIS 7.5=嵌套的web.config将不会覆盖应用程序级web.config中设置的自定义错误处理,iis,coldfusion,Iis,Coldfusion,运行ColdFusion 11(更新7)和IIS 7.5 我的网站应用程序/根级别web.config: <configuration> <system.webServer> <httpErrors errorMode="Custom" /> </system.webServer> </configuration> 位于/api/eb中的嵌套web.config文件: <configurati

运行ColdFusion 11(更新7)和IIS 7.5

我的网站应用程序/根级别web.config:

<configuration>
    <system.webServer>
        <httpErrors errorMode="Custom" />
    </system.webServer>
</configuration>

位于/api/eb中的嵌套web.config文件:

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
    </system.webServer>
</configuration>

当我访问位于/api/eb子目录(例如401.cfm)中的页面并触发401状态代码时,服务器将返回自定义错误处理程序响应。我对文档的解释是嵌套的web.config文件应该覆盖根web.config文件,但显然不是

我已在IIS应用程序主机文件中进行了检查,httpErrors overrideModeDefault设置为true。我还尝试在我的根web.config文件中使用位置标记来执行相同的操作,但也会忽略它,除非我将路径设置为通配符


我没有主意了。非常感谢你的帮助。提前谢谢。

我发现这篇文章似乎很好地解释了你的问题-

具体而言,本摘录:

安全注意事项

警告:出于架构原因,IIS只能在URL位于同一应用程序池中时执行URL。使用重定向功能在不同的应用程序池中执行自定义错误

当发生特定错误时,IIS还可以将302重定向返回到浏览器。如果您有一个服务器场,重定向是很好的。例如,您可以将所有错误重定向到您密切监视的中心位置

但是也存在风险:
responseMode=“File”
(默认设置)允许您指定磁盘上的每个文件。如果你非常有安全意识,这将不起作用

可行的方案可能包括仅允许委派errorMode设置。这使开发人员能够接收应用程序的详细错误,即使他使用的是远程客户端。只需设置
errorMode=“Detailed”
。以下是如何配置此场景:

允许httpErrors部分的委派:

其次,转到applicationHost.config中的部分,并将其更改为仅委派errorMode:


请注意,
overridedemodedefault
属性的正确值是
Allow
,而不是问题中提到的
true

本文进一步解释了
overrideModeDefault
属性-

摘录:

overrideModeDefault属性是一个可选属性,用于定义节的锁定状态。其可用值为允许或拒绝。默认值为“允许”。与服务器的任何性能、安全性或关键方面相关的所有IIS节都会被锁定,并且此属性设置为“拒绝”。如果overrideModeDefault属性设置为“Deny”,则为特定配置节的属性设置值的较低级别的任何配置文件(即web.config文件)都无法生效并覆盖全局值。这将导致锁冲突并发生错误


在重复检查时,我可以看到我确实将overrideModeDefault设置为allow