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

5

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

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

3个回答

4

这个错误:

无法建立连接,因为目标计算机积极拒绝了

意味着一个连接请求成功地传递到目标计算机(它不是防火墙问题),在给定的端口上目标计算机未监听传入连接,所以操作系统拒绝了连接尝试。

您的错误信息指出了连接尝试的机器 12.11.121.12 和端口号 80

该错误表明目标计算机上没有运行服务器。如果您“知道”要连接的计算机上正在运行服务器,因为您可以从另一个应用程序连接到它,则表明您的网站中的连接详细信息配置错误。

因此,需要检查以下几点:

  • 目标 Web 服务的 app.config/web.config 配置详细信息是否有任何差异?特别是机器名称(12.11.121.12)和端口号(80)可能存在差异。
  • 您是否在运行 IIS 托管的网站与工作的控制台/ Web 应用程序相同的计算机上?如果不是,请确保两台计算机都能解析目标服务器名称(例如,您是否使用 someserver.org 而不是 12.11.121.12,并且它被解析为不同的 IP,因为一个服务器面向外部,另一个服务器面向内部?

感谢您的回复。在看到您的回复后,我开始研究配置问题。我们的计算机是通过代理进行配置的,所以我认为这可能是个问题。我在web.config中更改了绑定元素中的一些参数,例如bypassProxyOnLocal="false" useDefaultWebProxy="false" proxyAddress="http://proxyaddress:portno",然后事情就立刻开始工作了。我想知道为什么没有人想到这个。 - VJAI
@Vijaya Anand:很高兴你解决了问题。代理绝对是最容易让你和你想要的不同机器通信的方法之一 :) - forsvarir
1
@Mark:关于网站礼仪的几点事项,因为你的问题似乎已经解决了。如果你发现我的答案对解决你的问题有用,通常礼貌的做法是给它点赞。如果你不打算接受它和/或颁发奖励(这是合理的,因为我没有提到你的确切问题),那么你应该考虑发布自己的答案并接受它,以表明问题已经得到解决及其方法。另一方面,如果你希望得到进一步的帮助,你可能需要更新你的问题,说明你仍然存在哪些问题。 - forsvarir

0

有趣的是,当在 Web 应用程序中使用 useDefaultWebProxy 为“true”时,我遇到了这个错误,但完全相同的代码和设置在单元测试类中却可以正常工作。

事实证明,Web 应用程序正在使用 https://foo/bar:1234 的 Web 浏览器代理(公司政策)。当我使用以下代码显式地设置它时:

<system.serviceModel>
  <bindings>
    <wsHttpBinding>
      <binding name=...
          useDefaultWebProxy="false" proxyAddress="https://foo/bar:1234"
       ...

我遇到了以下错误:
“ServicePointManager不支持HTTPS代理。”
所以我把代理地址改成了HTTP,而不是HTTPS,并且它可以正常工作了。

0

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


如果目标机器没有在连接尝试所在的端口上进行侦听(在这种情况下是因为代理设置,请参见我的答案下面的操作员评论),则会出现此错误“目标机器积极拒绝”。如果是权限问题,错误更可能是类似于“权限被拒绝”或“身份验证失败”的内容,但是这种级别的验证直到建立连接之后才会发生。 - forsvarir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接