在每一个动作中,我写道:
public ActionResult Foo()
{
try
{
// Do something
}
catch(Exception ex)
{
Logger.Error("Foo()", ex);
}
...
}
我知道MVC3能够在Global.asax中使用“RegisterGlobalFilters”,所以我想编写一个自定义的LogExceptionAttribute。将:
记录哪个动作导致异常的信息。调用我的Logger API:
Logger.Error(字符串actionName,Exception ex)
再次抛出异常。这样web.config中的CustomError就会显示用户错误页面。
如何实现这个?
答案 0 :(得分:1)
试试这个
public class HandleErrorHmAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
base.OnException(context);
new WebRequestErrorEventMvc("An unhandled exception has occurred.", this, 103005, context.Exception).Raise();
}
}
public class WebRequestErrorEventMvc : WebRequestErrorEvent
{
public WebRequestErrorEventMvc(string message, object eventSource, int eventCode, Exception exception) : base(message, eventSource, eventCode, exception) { }
public WebRequestErrorEventMvc(string message, object eventSource, int eventCode, int eventDetailCode, Exception exception) : base(message, eventSource, eventCode, eventDetailCode, exception) { }
}