0

在每个动作中,我写道:

public ActionResult Foo()
{
    try
    {
        // Do something
    }
    catch(Exception ex)
    {
        Logger.Error("Foo()", ex);
    }
    ...
}

我知道 MVC3 有能力在 Global.asax 中“注册全局过滤器”,所以我想写一个自定义的 LogExceptionAttribute。这将:

  1. 哪个 Action导致什么 Exception的日志信息。调用我的 Logger API:

    Logger.Error(string actionName, Exception ex)

  2. 再次抛出异常。这样 web.config 中的 CustomError 将显示用户错误页面。

如何实施?

4

1 回答 1

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) { }
       }
于 2012-11-06T04:40:33.877 回答