【问题标题】:Consuming a Webservice from behind a Proxy从代理后面使用 Web 服务
【发布时间】:2013-11-14 11:54:34
【问题描述】:

是的,关于如何:从代理后面作为 Web 服务使用的另一个问题。

好的,我知道这个问题已经在这个论坛的其他地方和网络上的其他地方得到了回答。但由于某种原因,我的设置不起作用。所以这是我的情况:

我正在使用 Visual Studio 2010 Express 通过 WSDL 生成的 .CS 文件(不使用 Web 参考)连接到 Web 服务。

当我尝试调用一个简单的 Ping() 函数时(如下所示),我收到以下错误:

WebException 未处理:请求失败,HTTP 状态为 407:需要代理身份验证。

我使用的代码如下所示。我不明白为什么会收到此错误。当 Web 浏览器提示我输入代理凭据时,我使用的用户名和密码与提供给 Web 浏览器的用户名和密码相同。

任何建议将不胜感激!!!!

提前致谢。

            PingResponseDocument theResponse;

            WebProxy wp = new WebProxy("IP_ADDRESS:PORT_NO", true);
            wp.Credentials = new NetworkCredential("USER_NAME", "PASSWORD", "IP_ADDRESS:PORT_NO");

            WebService test = new WebService();
            PingRequestDocument doc = new PingRequestDocument();

            test.Proxy = wp;
            theResponse = test.ping(doc);

【问题讨论】:

  • 没有代理可以用吗?
  • 嗨,明,我无法检查,因为这些东西是由我们的 IT 部门设置的(是的,这是用于工作的,不是个人的)。

标签: c# proxy


【解决方案1】:

请试试这个。

  1. 如果您尚未添加,请按 Ctrl + Shift + A 并创建一个新的应用程序配置文件。
  2. 现在在您的 app.config 中添加 system.net 元素,如下所示。

    <?xml version="1.0" encoding="utf-8" ?>
     <configuration>
      <system.net>
       <defaultProxy useDefaultCredentials="true" />
      </system.net>
    </configuration>
    

【讨论】:

    【解决方案2】:

    更新:

    所以我找到了我的问题的答案。基本上,当您需要使用 Web 服务时,您应该始终检查它是否需要代理。您可以使用以下函数来做到这一点:

    isbypassed()
    

    如果返回 true,那么您不需要代理凭据,您可以使用以下内容:

    WebProxy p = new WebProxy();
    WebService w = new WebService(); // Your Web Service.
    p.BypassList = new string[] {"IP_ADDRESS:PORT_NUMBER/dir../dir"};
    w.Proxy = p;
    
    w.someFunctionofYours(); // the function you call.
    

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 2013-12-17
      相关资源
      最近更新 更多