3

这篇关于 ASP.NET Web API 中的异常处理的帖子之后,我创建了一个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.HttpResponseExceptionActionMethodifMessage

处理 HTTP 请求导致异常。有关详细信息,请参阅此异常的“响应”属性返回的 HTTP 响应。

消息中引用的Response属性是500 Internal Server Error.

我的路线配置正确,因为ActionMethod确实受到了打击。我没有ExceptionFilterAttribute应用任何其他过滤器。

知道如何context.Exception才能真正引用引发的异常吗?

4

0 回答 0