如何在WebApi中设置全局错误处理程序
本文关键字:全局 错误 处理 程序 设置 WebApi | 更新日期: 2023-09-27 18:20:48
我正在构建一个.NET WebApi应用程序,我想设置一个全局错误处理程序(基本上是一个在应用程序中任何地方出现异常时执行的函数)。此链接对支持此功能表示遗憾,但提供了几种解决方案。不幸的是,我似乎找不到任何有用的文档。
以下是我的要求:
- 捕获在操作方法中以及在其他地方命中的异常(例如控制器解析)
- 在处理过程中可以访问原始Exception对象
- 在错误处理过程中,可以访问我(Autofac)IOC容器中的服务(这是一种强烈的需求,但不是必须的)
- 不依赖MVC(我使用的是纯WebApi)。不依赖IIS是非常可取的
我该如何设置?
如果您更新到Web API v2.1,可以通过Nuget使用以下命令:
Install-Package Microsoft.AspNet.WebApi
您可以通过从异常记录器继承来创建全局异常处理程序。
这里有一个例子:
class TraceExceptionLogger : ExceptionLogger
{
public override void LogCore(ExceptionLoggerContext context)
{
Trace.TraceError(context.ExceptionContext.Exception.ToString());
}
}
此处的发行说明中有更多详细信息:http://www.asp.net/web-api/overview/releases/whats-new-in-aspnet-web-api-21#global-错误
您应该注意以下几个选项:
事件AppDomain.CurrentDomain.FirstChanceException:
无论是否处理,都会对每个异常进行激发。在您的特定处理程序之前,将其用于日志等。
事件AppDomain.CurrentDomain.UnlandedException:
将对代码中未处理的每个异常进行激发
您需要在可以访问IOC容器等的服务中创建处理程序