ExceptionFilterAttribute中的异常始终为HttpResponseException类型

时间:2013-07-17 18:17:08

标签: exception-handling asp.net-web-api

关于ASP.NET Web API中的异常处理this post之后,我创建了一个ExceptionFilterAttribute,如下所示:

public class NotImplExceptionFilterAttribute : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext context)
    {
        if (context.Exception is NotImplementedException)
        {
            context.Response = new HttpResponseMessage(HttpStatusCode.NotImplemented);
        }
    }
}

...和一个看起来像这样的ASP.NET Web API控制器:

public class ProductsController : ApiController
{
    [NotImplExceptionFilter]
    public string Get()
    {
        throw new NotImplementedException("This method is not implemented");
    }
}

问题是,无论我在context.Exception中抛出什么异常,System.Web.Http.HttpResponseException 总是类型ActionMethod 。因此,if语句中的代码永远不会被执行。异常的Message属性为:

  

处理HTTP请求导致异常。请参阅   此响应的'Response'属性返回的HTTP响应   细节例外。

邮件中引用的Response属性为500 Internal Server Error

我的路由配置正确,因为ActionMethod确实被点击了。我没有应用任何其他ExceptionFilterAttribute过滤器。

知道如何让context.Exception实际引用抛出的异常吗?

0 个答案:

没有答案