关于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
实际引用抛出的异常吗?