【问题标题】:throw of HttpResponseException not getting caught by ExceptionFilterAttributeHttpResponseException 的抛出没有被 ExceptionFilterAttribute 捕获
【发布时间】:2015-06-03 18:37:43
【问题描述】:

我有一堂课:

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?

【问题讨论】:

  • 您是否尝试过实现异常处理程序而不是异常过滤器?

标签: c# asp.net-web-api2


【解决方案1】:

这是因为HttpResponseException被IHttpActionInvoker内部捕获并创建HttpResponseMessage;因此无法捕获此特殊异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2014-08-16
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2020-07-04
    相关资源
    最近更新 更多