2

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

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

我已经记录了这个错误,但我真的很想把 URI 记录在日志消息中,这样很容易确定是哪个 web 服务导致了问题。

有没有一种简单的方法可以从抛出的 WebException 中获取 URI?我查看了属性列表,但看不到任何可以得到我想要的东西的东西。

4

3 回答 3

0

您可以访问UrlSOAP 客户端代理对象(SoapHttpClientProtocol类型)上的属性。

如果您从代码中的一个方法调用两个不同的 Web 服务,只需在 Web 服务调用周围放置一个 try {} 捕获,并Exception使用有问题的 Web 服务的 Url 属性抛出一个适当的自定义。

就像是:

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);
}
于 2009-12-06T23:30:18.057 回答
0

确保您没有通过需要身份验证的 Web 代理调用服务。你会得到这个(或者可能是 401)错误并拉出你的头发(就像我一样)试图找出故障发生在哪里。直到我进行网络跟踪并发现请求正在访问我们的出站身份验证代理,并且请求没有凭据并被退回时,我才意识到发生了什么。

于 2012-04-21T12:42:17.577 回答
0

这对我来说可以直接从 WebException 中检索 Uri:

Uri uri = wex.Response.ResponseUri;
于 2019-04-13T01:11:19.630 回答