【发布时间】:2012-12-18 12:14:21
【问题描述】:
我有 MVC3 应用程序,其中正确记录生产中可能发生的所有错误非常重要。
当前方法使用 IExceptionFilter.OnException。该功能应用在 BaseContorller 上,所有其他控制器都继承自 BaseContorller,看起来(略微简化)如下:
public class BaseController : Controller, IExceptionFilter
{
protected override void OnException(ExceptionContext exceptionContext)
{
Logger.Error(exceptionContext.Exception);
}
}
这种方法效果很好,用于:
源自控制器操作方法中的代码的异常
源自控制器方法返回的视图的异常, 包括编译错误
- 应用于控制器的过滤器异常
但是,使用这种方法不会捕获异常:
- 在控制器构造函数中抛出异常
- 应用程序例程中引发的异常,例如:RegisterGlobalFilters、RegisterRoutes、Application_Start
- 找不到页面 (404)
您能想到控制器级异常处理可以忽略的其他类型的异常吗?
我之所以这么问,是因为我可能会使用 Application_Error 或 ELMAH 实现额外的日志记录层,并且我想验证这些异常中没有一个会在未记录的情况下漏掉。
【问题讨论】:
标签: c# .net asp.net-mvc asp.net-mvc-3 error-logging