0

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

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

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

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

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

我正在使用的代码如下所示。我不明白为什么会收到此错误。当 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);
4

2 回答 2

0

更新:

所以我找到了我的问题的答案。基本上,当您需要使用 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.

干杯

于 2013-11-14T03:54:34.137 回答
0

请试试这个。

  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>
    
于 2013-11-13T06:43:39.813 回答