【问题标题】:ASP.NET Web API Exception filter - A way to get request url from HttpRequestBase?ASP.NET Web API 异常过滤器 - 从 HttpRequestBase 获取请求 url 的方法?
【发布时间】:2013-05-05 01:30:16
【问题描述】:

我已经为我的 Web API 实现了一个自定义异常过滤器。它按预期工作,除了一个小细节......

在以下代码示例中,SaveToErrorLog 保存异常详细信息并尝试从 context.Request.RawUrl 获取请求 url。但是 context.Request 不包含异常发生时 API 尝试提供的 url。使用这样的异常过滤器时有没有办法获取 url?

public class APIExceptionFilter : ExceptionFilterAttribute
{
    private HttpContextBase context;

    public APIExceptionFilter() 
    {
        context = new HttpContextWrapper(HttpContext.Current);
    }

    public override void OnException(HttpActionExecutedContext actionContext)
    {
        actionContext.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError);       
        if (actionContext != null && context != null)
        {
            facade.SaveToErrorLog(actionContext.Exception, context.Request);
        }     

        throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
        {               
            Content = new StringContent(actionContext.Exception.Message),
            ReasonPhrase = "APIException"
        });
    }
}

【问题讨论】:

  • 你应该在 actionContext 中寻找 uri。

标签: asp.net .net asp.net-mvc exception asp.net-web-api


【解决方案1】:

根据@emre_nevayeshirazi 上面的评论,您需要使用HttpActionExecutedContext。这使您可以访问请求,然后访问所需的 Uri。

public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
    var requestedUri = actionExecutedContext.Request.RequestUri;
   //Do something
}

【讨论】:

  • 小错字:actionExecutedContext
  • @马克·琼斯。请您认为您可以帮助我解决这个问题goo.gl/qiOdmT
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 2016-03-12
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多