我有一个类:
public class ApiExceptionFilterAttribute : ExceptionFilterAttribute,IExceptionFilter
{ public override void OnException(HttpActionExecutedContext context)
{
// ... etc...
}
}
我在global.asax.cs中注册了以下内容:
...public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
var exceptionFilter = new ApiExceptionFilterAttribute();
GlobalConfiguration.Configuration.Filters.Add(exceptionFilter);
}
}
我的应用程序以各种方式抛出异常,在大多数情况下,我可以看到 OnException 方法按预期被调用。然而,如果我的 Web Api 控制器方法抛出 HttpResponseException,则似乎会绕过异常过滤器。我得到了一个返回的响应,但这不是因为异常过滤器在做什么(OnException 方法没有被调用)。
是什么导致了这种“选择性”行为的异常过滤器?如何确保 OnException 会被调用来处理控制器方法中抛出的所有异常?