我正在使用三种模型在MVC中进行特殊处理。
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
//logging
}
}
和
public class Base_Application : System.Web.HttpApplication
{
protected void Application_Error(object sender, EventArgs e)
{
//Logging
}
}
和
public class Base_Controller : Controller
{
protected override void OnException(ExceptionContext filterContext)
{
//Logging;
}
}
如果我从代码中抛出示例异常,则CustomHandleErrorAttribute
和Base_Controller
会抓住它。
和
在Base_Application
我正在记录异常,这是Elmah记录的。
所以我想知道所有情况下最好的方法。
答案 0 :(得分:1)
如果您有基本控制器,我建议采用这种方法
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
//logging
}
}
使用自定义属性
装饰基本控制器[CustomHandleError]
public class Base_Controller : Controller
{
}
如果你添加一个以后不需要基本控制器的控制器,你也可以重用该属性。
还要通过这个精彩的article来决定是使用基本控制器还是ActionFilter。
Application_Error
事件可用于捕获页面级错误处理程序未捕获的错误。