15

我创建了使用免费网络服务的简单 WinForms 应用程序http://www.webservicemart.com/uszip.asmx。但是此应用程序无法使用服务操作并出现错误:

远程服务器返回了意外响应:(407) 需要代理身份验证(ISA 服务器需要授权才能完成请求。拒绝访问 Web 代理服务)

创建代理并触发服务操作的代码:

ChannelFactory<ServiceReference1.USZipSoap> proxy = new ChannelFactory<ServiceReference1.USZipSoap>("USZipSoap");
ServiceReference1.USZipSoap client = proxy.CreateChannel();
string str = client.ValidateZip("12345");
MessageBox.Show(str);

这是我公司网络的问题,还是webservicemart.com的代理?

我在谷歌上搜索了很多关于更改配置文件、创建自定义绑定等的信息。但我觉得缺乏更基本的理解......
如果这个错误是关于我们公司网络的 ISA 服务器的,那么我应该进行什么配置ISA Server 不限制我使用外部 Web 服务?

4

5 回答 5

43

在您的绑定配置中确保将useDefaultWebProxy其设置为 true - 它将使用您在 IE 中找到的配置。在您的配置文件中添加以下代码段,以确保默认使用您的凭据在代理服务器上进行身份验证:

<system.net>
  <defaultProxy useDefaultCredentials="true" />
</system.net>
于 2012-01-04T13:45:20.063 回答
2

这对我有用...用代理服务器的 IP 替换 10.1.0.50 和端口号

  <system.net>
    <defaultProxy useDefaultCredentials="true">
      <proxy usesystemdefault="False" proxyaddress="http://10.1.0.50:8080" bypassonlocal="True" />
    </defaultProxy>
  </system.net>
于 2013-03-15T10:25:54.700 回答
1

似乎贵公司的所有流量都通过代理重定向。您能否从 IE 浏览到 Web 服务并查看其 wsdl 并调用测试页面以查看一些结果。如果是这种情况,请尝试将以下部分添加到您的 web.config 中:

<system.net>   
<defaultProxy>     
<proxy proxyaddress="<your proxy address>" bypassonlocal="true" />
</defaultProxy>
</system.net> 

您可以从 IE 的设置中找到代理地址。

注意:当您移动到不同的环境时,您需要确保它的情况相同,否则您需要删除上述配置。

于 2012-01-04T10:20:39.167 回答
0

您可以设置服务的 web.config 以允许使用Internet Explorer 中定义的代理设置

于 2013-08-26T10:01:33.003 回答
0

在未来的某个时候。

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
于 2017-09-19T22:53:44.660 回答