我在web服务上调用一个方法,它正在抛出403 Forbidden WebException ......
System.Net.WebException:请求 HTTP状态403失败: 禁止的。
我记录了这个错误,但我真的希望在日志消息中记录URI,以便很容易确定导致问题的Web服务。
是否有一种简单的方法可以从抛出的WebException中获取URI?我查看了属性列表,看不到任何能让我得到我想要的内容。
答案 0 :(得分:1)
您可以访问SOAP客户端代理对象(Url
类型)上的SoapHttpClientProtocol
属性。
如果您在代码中使用一种方法调用两个不同的Web服务,只需在Web服务调用周围进行try {}捕获,并使用违规Web服务的Url属性抛出相应的自定义Exception
类似的东西:
string url = client.Url;
try
{
client.MyWebServiceCall();
url = client2.Url;
client2.MyWebServiceCall2();
}
catch (Exception ex)
{
throw new Exception("Webservice call failed. Url: "+url+", Error:"+ex.Message,ex);
}
答案 1 :(得分:0)
确保您没有通过需要身份验证的webproxy来调用服务。你会得到这个(或者可能是一个401)错误并拔掉你的头发(正如我所做的那样)试图找出失败的原因。我没有意识到发生了什么,直到我进行网络跟踪并发现请求正在命中我们的出站认证代理,并且请求没有凭据,并且退回。
答案 2 :(得分:0)
这对我来说可以直接从WebException中检索Uri:
Uri uri = wex.Response.ResponseUri;