ExceptionFilterAttribute强制仅使用第一个

时间:2014-03-27 23:44:25

标签: asp.net-mvc action-filter

我正在使用ExceptionFilterAttribute,如下所示:

    public class HttpExceptionFilter : ExceptionFilterAttribute
    {
        public override void OnException(HttpActionExecutedContext context)
        {
            var httpEx =  context.Exception as HttpException;

            if (httpEx != null)
            {
                var message = new HttpResponseMessage((HttpStatusCode) httpEx.GetHttpCode());
                context.Response = message;
                context.Exception = null;
            }
        }
    }

所以,我需要通过这个过滤器,但如果它进入'如果'条件, 我希望不再输入任何过滤器,这就是为什么我做了最后一行:

context.Exception = null;

但它没有用。我怎样才能做到这一点? 非常感谢!

1 个答案:

答案 0 :(得分:0)

使用FilterAttributeIExceptionFilter并使用OnException参数实施ExceptionContext可以避免在引发异常时使用任何其他过滤器。

        public class MyErrorHandlerAttribute : FilterAttribute, IExceptionFilter
        {
            public void OnException(ExceptionContext filterContext)
            {
                if (!filterContext.ExceptionHandled)
                {

                    //Write more exception processing code if required

                    filterContext.ExceptionHandled = true;
                    filterContext.Result = new ViewResult { ViewName = "Error" };
                }
            }
        }

使用OnResultExecuted进行测试。当上述实现处理异常时,没有触发。