gpt4 book ai didi

asp.net - Application_Error 未在 asp.net web api 中触发

转载 作者:行者123 更新时间:2023-12-04 12:59:01 26 4
gpt4 key购买 nike

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

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

那么我如何捕捉 Exception提出为什么要创建处理响应的 Controller ?

最佳答案

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());

关于asp.net - Application_Error 未在 asp.net web api 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16959270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com