类似的问题被问到here,但该问题特别涉及404错误。
我已将Elmah添加为here描述的全局处理程序。如果我在代码中引发错误Elmah捕获它就好了,但是如果我通过控制器从EF获得SQL错误,那么它没有被捕获 - 在json中返回异常消息作为500错误。
根据这个article,有些情况下无法捕获异常,但我的情况似乎不是其中之一。
任何人都可以解释为什么WebAPI中的全局错误处理程序不会捕获SQL异常吗?
这是我的处理程序:
public class UnhandledExceptionFilter : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(context.Exception));
}
}
以及它在WebApiConfig.cs中注册的位置
public static void Register(HttpConfiguration config)
{
----
config.Filters.Add(new UnhandledExceptionFilter());
}