在asp.net web api中不会触发Application_Error

时间:2013-06-06 10:05:58

标签: asp.net asp.net-mvc-4 asp.net-web-api

如何在ASP.NET WebAPI应用程序中触发Application_Error?我现在遇到的错误是当我们通过NInject解析控制器并且失败时它将不会进入Application_Error而我们无法记录错误,因为我们正在Application_Error进行全局登录

我们还有一个用于处理错误的全局过滤器,但只有在我们找到控制器时才会触发,但由于我们失败了我们实例化控制器,因此我们不会通过任何过滤器。

那么我如何抓住Exception为什么要尝试创建处理响应的控制器呢?

1 个答案:

答案 0 :(得分:0)

ASP.Net Web API有自己的异常处理程序,您可以覆盖它并从那里重新抛出异常,以便在Application_Error

中处理它
public class MyExceptionHandler : IExceptionHandler
{
    public virtual Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
    {
        ExceptionDispatchInfo.Capture(context.Exception).Throw();
        return Task.CompletedTask;
    }
}

您还需要将MyExceptionHandler类添加到Web API服务。

httpConfiguration.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler());