我正在使用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;
但它没有用。我怎样才能做到这一点? 非常感谢!
答案 0 :(得分:0)
使用FilterAttribute
和IExceptionFilter
并使用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
进行测试。当上述实现处理异常时,没有触发。