我能够成功地从控制台或在VS开发服务器上运行的网站/ Web应用程序连接到远程WCF服务。 但是,当我尝试从托管在IIS上的网站进行连接时,我收到以下错误。 有什么想法吗?
无法建立连接,因为目标计算机积极拒绝了它12.11.121.12:80
这个错误:
无法建立连接,因为目标计算机积极拒绝了
意味着一个连接请求成功地传递到目标计算机(它不是防火墙问题),在给定的端口上目标计算机未监听传入连接,所以操作系统拒绝了连接尝试。
您的错误信息指出了连接尝试的机器 12.11.121.12
和端口号 80
。
该错误表明目标计算机上没有运行服务器。如果您“知道”要连接的计算机上正在运行服务器,因为您可以从另一个应用程序连接到它,则表明您的网站中的连接详细信息配置错误。
因此,需要检查以下几点:
someserver.org
而不是 12.11.121.12
,并且它被解析为不同的 IP,因为一个服务器面向外部,另一个服务器面向内部?有趣的是,当在 Web 应用程序中使用 useDefaultWebProxy 为“true”时,我遇到了这个错误,但完全相同的代码和设置在单元测试类中却可以正常工作。
事实证明,Web 应用程序正在使用 https://foo/bar:1234 的 Web 浏览器代理(公司政策)。当我使用以下代码显式地设置它时:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name=...
useDefaultWebProxy="false" proxyAddress="https://foo/bar:1234"
...
这听起来很像权限(身份验证问题),因为应用程序池默认情况下在不同的用户(机器)下运行。由于WCF使用身份验证令牌,我敢打赌这就是你的问题。尝试将池的标识设置为与控制台相同的用户,我敢打赌它会正常工作。