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?您应该只捕获您感兴趣的异常,而不只是捕获异常类型,并且对该异常不做任何处理。