WCF客户端 - 运行Web服务时需要407代理身份验证

时间:2012-01-04 07:42:50

标签: wcf web-services proxy isaserver http-status-code-407

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

  

远程服务器返回了意外响应:(407)需要代理身份验证(ISA Server需要授权才能完成请求。拒绝访问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服务?

5 个答案:

答案 0 :(得分:43)

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

<system.net>
  <defaultProxy useDefaultCredentials="true" />
</system.net>

答案 1 :(得分: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>

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:0)

您可以设置服务的web.config以允许使用proxy settings as defined in Internet Explorer

答案 4 :(得分:0)

将来某个时间。

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;