如何获取引发WebException的URI?

时间:2009-12-06 23:24:19

标签: c# .net web-services uri system.net.webexception

我在web服务上调用一个方法,它正在抛出403 Forbidden WebException ......

  

System.Net.WebException:请求   HTTP状态403失败:   禁止的。

我记录了这个错误,但我真的希望在日志消息中记录URI,以便很容易确定导致问题的Web服务。

是否有一种简单的方法可以从抛出的WebException中获取URI?我查看了属性列表,看不到任何能让我得到我想要的内容。

3 个答案:

答案 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;