2

如果您想返回实际的 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 )。

非常感谢您!

4

0 回答 0