代码之家  ›  专栏  ›  技术社区  ›  mezoid

如何获取引发WebException的URI?

  •  2
  • mezoid  · 技术社区  · 15 年前

    我在一个WebService上调用一个方法,它正在抛出一个403禁止的WebException…

    System.net.WebException:请求 失败,HTTP状态为403: 被禁止的。

    我已经记录了这个错误,但是我真的希望在日志消息中记录这个URI,这样就可以很容易地确定是哪个Web服务导致了这个问题。

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

    2 回复  |  直到 13 年前
        1
  •  1
  •   Wim    15 年前

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

    如果您从代码中的一个方法调用两个不同的Web服务,只需在Web服务调用周围放置一个try catch,并抛出一个适当的自定义 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);
    }
    
        2
  •  0
  •   David W    13 年前

    请确保您没有通过所需的身份验证WebProxy调用服务。你会得到这个(或者可能是401)错误,然后把你的头发拔出来(就像我做的那样),试图找出故障发生的地方。我没有意识到发生了什么,直到我做了一个网络跟踪,发现请求正在访问我们的出站认证代理,并且请求没有凭据,然后返回。

    推荐文章