我正在编写一个异常过滤器,用于将异常记录到Elmah中,所以我正在做类似以下的操作:
class ExceptionLoggingFilter : System.Web.Http.Filters.IExceptionFilter
{
public Task ExecuteExceptionFilterAsync(HttpActionExecutedContext actExecContext,
CancellationToken cancellationToken)
{
var httpContext = // what do I do here?
var errorSignal = ErrorSignal.FromContext(httpContext); // this is Elmah
errorSignal.Raise(actExecContext.Exception, httpContext);
}
}
我的问题是,我不知道在评论问题的位置放什么。我尝试探索从方法签名中获得的HttpActionExecutedContext
的成员树,以找到一种获取System.Web.HttpContext
的方法,但我找不到任何方法可以到达那里。
我该如何实现我的目标呢?
ApiController
不使用HttpContext
或HttpContextBase
。您可以使用HttpContext.Current
访问它们,但仅当 WebAPI 托管在 IIS 中时才能这样做。如果您正在 IIS 中托管,则可以直接执行ErrorSignal.FromCurrentContext()
,或者按照 Joanvo 的答案操作。 - danludwig