我创建了简单的WinForms应用程序,使用免费的web服务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服务器做什么配置,以不限制我使用外部web服务?
在绑定配置中确保useDefaultWebProxy
设置为true -它将使用您在IE中找到的配置。在配置文件中添加以下代码片段,以确保默认情况下将凭据用于代理服务器上的身份验证:
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
这对我有用…将10.1.0.50和端口号替换为代理服务器的IP
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy usesystemdefault="False" proxyaddress="http://10.1.0.50:8080" bypassonlocal="True" />
</defaultProxy>
</system.net>
似乎你们公司的所有流量都通过代理被重定向了。您可以从IE中浏览到web服务并查看其wsdl并调用测试页面以查看一些结果吗?如果是这样的话,试着把下面的部分添加到你的web.config中:
<system.net>
<defaultProxy>
<proxy proxyaddress="<your proxy address>" bypassonlocal="true" />
</defaultProxy>
</system.net>
您可以从IE的设置中找到代理地址。
注意:当你移动到不同的环境时,你需要确保它是相同的情况,否则你需要删除上述配置
您可以设置web。
以后的某个时候。
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;