加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 04:06:14 所属栏目:asp.Net 来源:网络整理
导读:如何在ASP.NET WebAPI应用程序中触发Application_Error?我现在遇到的错误是当我们通过NInject解析控制器并且失败时它将不会进入Application_Error并且我们无法记录错误,因为我们正在进行Application_Error中的全局日志记录. 我们还有一个用于处理错误的全局
如何在ASP.NET WebAPI应用程序中触发Application_Error?我现在遇到的错误是当我们通过NInject解析控制器并且失败时它将不会进入Application_Error并且我们无法记录错误,因为我们正在进行Application_Error中的全局日志记录.

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

那么我如何捕获异常,为什么尝试创建处理响应的控制器呢?

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读