7

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

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

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

4

1 回答 1

1

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;
    }
}

您还需要向MyExceptionHandlerWeb API 服务添加类。

httpConfiguration.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler());
于 2018-03-29T16:38:29.423 回答