Lau*_*i I 0 .net asp.net asp.net-mvc exception asp.net-web-api
我已经为我的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"
});
}
}
Run Code Online (Sandbox Code Playgroud)
根据@emre_nevayeshirazi上面的评论,你需要使用HttpActionExecutedContext
.这使您可以访问请求,然后访问所需的Uri.
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
var requestedUri = actionExecutedContext.Request.RequestUri;
//Do something
}
Run Code Online (Sandbox Code Playgroud)