如何捕获一个甚至没有被OnException覆盖捕获的错误?

时间:2010-01-05 22:01:03

标签: asp.net-mvc

所以我们有一个我们正在使用的基本控制器,它包含一个OnException的覆盖,它将错误记录到我们的bug跟踪工具中。但是我注意到一些错误永远不会成功,我想知道当某个应用程序记录所有它自己的错误时,它是否有点愚蠢,因为它本身就是有错误的东西,这可能会导致一些错误永远不会被捕获..?无论哪种方式,什么是最佳解决方案,还是应该始终预期会发生OnException?我是否应该在Windows Server上放置一些工具来记录错误而不是在应用程序本身内?

2 个答案:

答案 0 :(得分:2)

我认为我从未见过在某些时候无法捕获的错误。我也有应用程序级日志记录,就像你我已经实现了一个基本控制器。

我的基本控制器不进行任何记录。相反,我创建了一个自定义动作过滤器,我使用它来装饰我的控制器和操作,并完成所有日志记录。

我还在global.asax中向Application_Error事件添加了代码,该事件执行了一些日志记录,并且还调用了错误控制器来处理实际错误。

我希望这会以某种方式帮助你。如果您想要我提到的任何代码,请在此答案中添加注释,我将提供。它也不是很多代码。

答案 1 :(得分:2)

Controller.OnException事件只能捕获在执行的Controller范围内抛出的事件。在将http请求映射到控制器之前发生了一些事件,并且OnException事件不会捕获这些事件。例如,如果您有一个将RequestContext映射到特定控制器的控制器工厂,那么此处抛出的异常不在Controller的范围内。

您应该在global.asax.Application_Error事件中实现“故障安全”异常处理程序。