【发布时间】:2015-02-06 16:32:48
【问题描述】:
我正在编写一个异常过滤器,它将向 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:我在 IIS 中运行它,所以它可能会工作。
标签: asp.net asp.net-web-api httpcontext