Web API にカスタム例外フィルターを実装しました。1 つの小さな詳細を除いて、意図したとおりに機能しています...
次のコード サンプルでは、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"
});
}
}