2
抓到我有一個類:拋HttpResponseException的沒有得到通過ExceptionFilterAttribute
public class ApiExceptionFilterAttribute : ExceptionFilterAttribute,IExceptionFilter
{ public override void OnException(HttpActionExecutedContext context)
{
// ... etc...
}
}
...這是我在的global.asax.cs已註冊這樣的:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
var exceptionFilter = new ApiExceptionFilterAttribute();
GlobalConfiguration.Configuration.Filters.Add(exceptionFilter);
}
}
我的應用程序拋出例外各種各樣的方式,並且在大多數情況下,我可以看到OnException方法正在按預期調用。但是,如果我的Web Api控制器方法拋出HttpResponseException,它似乎繞過了異常過濾器。我得到的響應按預期返回,但它不是因爲異常過濾器正在做的事(不調用OnException方法)。
什麼是導致我的異常過濾器這種「選擇性」的行爲?我如何確保OnException將被調用以控制器方法內拋出的所有異常?
你是否嘗試過實現一個異常處理程序而不是一個異常過濾器? –