无法从IIS连接到远程wcf服务

时间:2011-05-26 10:37:07

标签: wcf iis

我能够从控制台或VS dev服务器上运行的网站/ web应用程序成功连接到远程WCF服务。但是,当我尝试从IIS托管的网站连接时,我收到以下错误。有什么想法吗?

  

无法建立连接,因为目标计算机主动拒绝了它12.11.121.12:80

3 个答案:

答案 0 :(得分:4)

此错误:

  

无法建立连接,因为目标计算机主动拒绝它

表示连接请求已成功通过目标计算机(不是防火墙问题),在给定端口上且目标计算机未侦听该端口上的传入连接,因此操作系统拒绝连接尝试

您的其他错误标识了尝试连接的计算机12.11.121.12和端口号80

该错误表示服务器未在目标计算机上运行。如果您知道服务器正在您尝试连接的计算机上运行,​​因为您可以从其他应用程序连接到该服务器,这表明您的连接详细信息在网站中配置错误。

所以,有些事要检查:

  • 目标网络服务的app.config / web.config配置详细信息之间是否存在任何差异?具体来说,机器名称(12.11.121.12)和端口号(80)似乎是潜在的。
  • 您是否在与运行的控制台/ Web应用程序相同的计算机上运行IIS托管网站?如果没有,那么两台机器是否都会解析目标服务器名称(例如,您是使用someserver.org而不是12.11.121.12并且它正在被解析为另一个IP,因为一台服务器面向外部,另一台服务器是内部服务器?

答案 1 :(得分:0)

这听起来很像权限(身份验证问题),因为默认情况下应用程序池在不同的用户(计算机)下运行。由于WCF使用身份验证令牌,我敢打赌这是你的问题。尝试将池的标识设置为与控制台相同的用户,我敢打赌它可以正常工作。

答案 2 :(得分:0)

奇怪的是,当useDefaultWebProxy从Web应用程序“真实”时出现此错误,但完全相同的代码和设置在单元测试类中正常工作。

事实证明,Web App正在使用https://foo/bar:1234的网络浏览器代理(公司政策)。当我使用:

明确地设置它时
<system.serviceModel>
  <bindings>
    <wsHttpBinding>
      <binding name=...
          useDefaultWebProxy="false" proxyAddress="https://foo/bar:1234"
       ...

我收到了错误:

  

ServicePointManager不支持具有https方案的代理

所以我将代理地址更改为http,而不是https,并且工作正常。