如何从WebException获取完整的请求详细信息?(获取|发布等)

本文关键字:获取 详细信息 请求 WebException | 更新日期: 2023-09-27 18:00:11

我有一个asp.net web api项目。在我的控制器中,我设置了

ExceptionFilterAttribute

在全局级别捕捉任何错误。有两个get请求从控制器方法中被触发。它们正在失败,因此我看到异常筛选器中出现异常。但是,异常并没有向我显示失败请求的详细信息。有可能得到它们吗?例如,可能已经调用了4个GET请求,其中一个请求失败,并且抛出了异常。但我看到的只是一条信息。。。

无法解析远程名称:"xx.xx.com"

但我需要更多的细节,比如查询字符串等…

web异常上的响应对象也为null:-(

如何从WebException获取完整的请求详细信息?(获取|发布等)

ExceptionFilterAttributeOnException方法中,有一个类型为HttpActionExecutedContext的参数参数。在该类的实例中,您可以访问RequestResponse属性,以获取所需的所有信息,包括请求或响应。在ActionContext属性中,您甚至可以获得所有路由、控制器和操作信息。

var requestHttpMethod = actionExecutedContext.Request.Method;
var requestUri = actionExecutedContext.Request.RequestUri;
var controllerDescriptor = actionExecutedContext.ActionContext.ControllerContext.ControllerDescriptor;
var actionDescriptor = actionExecutedContext.ActionContext.ActionDescriptor;

您还可以修改响应对象以返回更合适的错误消息。看看这些类能为您提供什么信息就知道了。