6

我正在构建一个 .NET WebApi 应用程序,我想设置一个全局错误处理程序(基本上是一个在应用程序中任何地方出现异常时执行的函数)。此链接对此表示遗憾,但提供了几种解决方法。不幸的是,我似乎找不到任何有用的文档。

以下是我的要求:

  • 捕获动作方法以及其他地方(例如控制器解析)中的异常。
  • 在我的处理过程中可以访问原始的异常对象。
  • 在错误处理过程中可以访问我的(Autofac)IOC 容器中的服务(这是一个强烈的愿望,但不是必须的)。
  • 不依赖 MVC(我使用的是纯 WebApi)。不依赖 IIS 是非常可取的。

我该如何设置呢?

4

2 回答 2

7

如果您更新到 Web API v2.1,可通过 Nuget 使用以下命令:

Install-Package Microsoft.AspNet.WebApi

您可以通过从 Exception Logger 继承来创建全局异常处理程序。

这是一个例子:

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-error

于 2014-01-21T17:12:44.523 回答
0

您应该注意以下几个选项:

事件AppDomain.CurrentDomain.FirstChanceException

无论是否处理,都会为每个异常触发。在您的特定处理程序之前使用它来记录等。

事件AppDomain.CurrentDomain.UnhandledException

将为代码中未处理的每个异常触发

您需要在可以访问您的 IOC 容器等的服务中创建处理程序

于 2013-07-03T13:40:06.690 回答