【问题标题】:How do I get the full request details from WebException? (GET|POST etc)如何从 WebException 获取完整的请求详细信息? (获取|发布等)
【发布时间】:2013-02-20 10:50:17
【问题描述】:
我有一个 asp.net web api 项目。在我的控制器中,我设置了
ExceptionFilterAttribute
在全局级别捕获任何错误。控制器方法触发了两个 get 请求。他们失败了,所以我看到异常过滤器中引发了异常。但是,异常没有向我显示失败请求的详细信息。有可能得到它们吗?例如,可能调用了 4 个 GET 请求,其中一个失败并引发异常。但我看到的只是一条消息......
无法解析远程名称:'xx.xx.com'
但我需要更多详细信息,例如查询字符串等...
web异常上的响应对象也是空的:-(
【问题讨论】:
标签:
c#
asp.net-mvc
wcf
asp.net-web-api
system.net.webexception
【解决方案1】:
在ExceptionFilterAttribute 的OnException 方法中,您有一个HttpActionExecutedContext 类型的参数参数。在此类的实例中,您可以访问Request 和Response 属性以获取您需要的所有信息,无论是请求还是响应。在ActionContext 属性中,您甚至可以获取所有路由、控制器和操作信息。
var requestHttpMethod = actionExecutedContext.Request.Method;
var requestUri = actionExecutedContext.Request.RequestUri;
var controllerDescriptor = actionExecutedContext.ActionContext.ControllerContext.ControllerDescriptor;
var actionDescriptor = actionExecutedContext.ActionContext.ActionDescriptor;
您还可以修改响应对象以返回更合适的错误消息。看看这些类可以为您提供哪些信息。