如果您想返回实际的 HTTP 状态代码(如 404、500 等)而不是 302(因为它仅适用于 Web 窗体),则默认选项<system.web><customErrors>
在 ASP.NET MVC 应用程序中效果不佳。
无论我在哪里以及如何捕获异常(例如在 Global.asax 或全局错误处理程序中)并“吞下”异常(例如使用Server.ClearError()
),我都可以完全控制呈现给客户端的内容,但我会失去默认日志记录( Web 事件写入 Windows 事件日志)。这种日志记录对我来说很好,它非常强大,而且我有事件日志监控,所以这正是我想要的日志记录。
有什么我可以做的,例如在 Global.asax 中简单地强制 ASP.NET 将当前错误记录为 Web 事件,然后清除错误?
需要 ASP.NET 4 和 IIS7.5 集成模式的解决方案就可以了。
一种可行的选择是使用<system.webServer><httpErrors>
,但是这仅适用于existingResponse="Replace"
,而不适用Auto
,因为 ASP.NET 似乎自动设置TrySkipIisCustomErrors=true
,我需要它,Auto
因为我的应用程序的一些控制器需要返回自定义错误页面(XML )。
非常感谢您!