帮助!
我有一个处理 Application.Error 事件的自定义 HttpModule。该模块正在工作......它将消息记录到事件日志中,我可以看到这些消息......一直到模块的末尾(在它写入自定义响应并调用 response.flush() 之后)。粗略地说,此模块的目的是记录错误并向用户显示礼貌的错误消息(可配置为消息可能/可能不包含有关错误的有用详细信息)。
在应用程序的 web.config 中,我配置了 <httpErrors errorMode="Detailed"> 和 <customErrors mode="Off" />。在 applicationHost.config 我配置了 <section name="httpErrors" overrideModeDefault="Allow" />。同样在 applicationHost.config 中,我在 <location path="default web site/myvdir"> 元素下配置了 <httpErrors errorMode="Detailed"> 。
“黄屏死机”仍然显示(对于本地请求和远程请求)。
这似乎是一个 Win2008R2 问题......这一切都适用于 win2008(我刚刚加载了我的测试环境并尝试了这个)。我怀疑它与 x64 与 x86 相关……但 Win2008R2 仅适用于 x64……而我的 Win2008 测试环境是 x86。
我对此做了更多的探讨。在 Win2008 中,<httpErrors errorMode="Detailed"> 没有任何意义。不显示自定义错误消息。使用它显示自定义错误消息。在 Win2008R2 上,无论 httpErrors/ErrorMode=Detailed 如何,我都会看到相同的问题(黄屏)。
所以......也许我真正的问题是为什么 <customErrors mode="Off" /> 设置在 IIS7.5 上不起作用。如果我将它设置为“开”,我得到短 ysod,设置“关”我得到长 ysod(而不是来自 http 处理程序的自定义消息,就像 IIS7 和 IIS6 中发生的那样),设置为“RemoteOnly”我得到短的 ysod。
半解决:应用程序池设置为托管管道模式:集成。将此切换到经典模式允许显示自定义错误详细信息。这不能解释为什么 IIS7 (win2008 x86) 与集成管道和 IIS7.5 (win2008r2 x64) 需要经典管道一起使用。有什么想法吗?
非常感谢帮助!!!
编辑:修复 xml 标签并添加更多信息和 SEMI-SOLVED