我在 web 服务上调用一个方法,它抛出 403 Forbidden WebException ...
System.Net.WebException:请求失败,HTTP 状态 403:禁止。
我已经记录了这个错误,但我真的很想把 URI 记录在日志消息中,这样很容易确定是哪个 web 服务导致了问题。
有没有一种简单的方法可以从抛出的 WebException 中获取 URI?我查看了属性列表,但看不到任何可以得到我想要的东西的东西。
我在 web 服务上调用一个方法,它抛出 403 Forbidden WebException ...
System.Net.WebException:请求失败,HTTP 状态 403:禁止。
我已经记录了这个错误,但我真的很想把 URI 记录在日志消息中,这样很容易确定是哪个 web 服务导致了问题。
有没有一种简单的方法可以从抛出的 WebException 中获取 URI?我查看了属性列表,但看不到任何可以得到我想要的东西的东西。
您可以访问Url
SOAP 客户端代理对象(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);
}
确保您没有通过需要身份验证的 Web 代理调用服务。你会得到这个(或者可能是 401)错误并拉出你的头发(就像我一样)试图找出故障发生在哪里。直到我进行网络跟踪并发现请求正在访问我们的出站身份验证代理,并且请求没有凭据并被退回时,我才意识到发生了什么。
这对我来说可以直接从 WebException 中检索 Uri:
Uri uri = wex.Response.ResponseUri;