Asp.net web api 正在忽略ApicController的ExceptionFilterAttribute

Asp.net web api 正在忽略ApicController的ExceptionFilterAttribute,asp.net-web-api,exception-handling,Asp.net Web Api,Exception Handling,我试图替换当前代码中的错误模式,其中每个控制器操作由一行组成,例如: HandleExceptions(() => { actual.code.for.action; more.code; yada; yada; yada;}); 我为ApicController构建了一个ExceptionFilterAttribute。这是您的标准ExceptionFilterAttribute,从我看过的文档中可以看出: public class HandleExceptionsAttribute

我试图替换当前代码中的错误模式,其中每个控制器操作由一行组成,例如:

HandleExceptions(() => { actual.code.for.action; more.code; yada; yada; yada;});
我为ApicController构建了一个ExceptionFilterAttribute。这是您的标准ExceptionFilterAttribute,从我看过的文档中可以看出:

public class HandleExceptionsAttribute : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext actionExecutedContext)
    {
        if (actionExecutedContext.Exception is SecurityException) { ... }
        else if (actionExecutedContext.Exception is InvalidOperationException) { ... }
        else { base.OnException(actionExecutedContext); }
    }
}
我确实全局注册了该属性,但此时确实不希望它全局注册:

GlobalConfiguration.Configuration.Filters.Add(new HandleExceptionsAttribute());
出于测试目的,我将其设置为:

        [Route("~/throwAnException")]
        [HttpGet]
        [HandleExceptionsAttribute]
        public blarg[] ThrowSomething() {
            throw new SecurityException("you are not allowed here");
        }

从未调用My HandleExceptionsAttribute.OneException。为什么?

1-确保管道中没有处理异常并吞咽异常的捕获


2-如果全局添加了筛选器,则无需通过HandleExceptionsAttribute修饰操作,因此请将其删除,让代码生成en exception并查看发生了什么,查看您的代码,我相信所有设置都正确,应该可以正常工作。

Hmmm,也许它不喜欢我同时拥有属性和全局过滤。。。也许这是月亮的相位。不管它是什么,它现在似乎起作用了。谢谢这是否意味着我不应该在代码中使用try/catch?您应该只捕获您感兴趣的异常,而不只是捕获异常类型,并且对该异常不做任何处理。