Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF无法建立连接,因为目标计算机主动拒绝_Wcf_Wcf Security - Fatal编程技术网

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

WCF无法建立连接,因为目标计算机主动拒绝,wcf,wcf-security,Wcf,Wcf Security,我刚刚使用net.tcp实现了一个简单的WCF服务器 首先,我使用127.0.0.1作为服务器地址,客户端可以连接WCF服务 一切都好。但是当我尝试使用内部IP192.x.x.x时,我得到一个错误: 无法建立连接,因为目标计算机主动拒绝连接 你知道这是什么原因吗 祝福 PS:我在WCF上禁用了身份验证。甚至关闭防火墙所有…不工作…您在客户端和服务器上都使用192.x.x.x吗?我记得不久前看到一个问题,TCP需要匹配客户端和服务器名称(与消息属性之一相关),因此如果您使用“localhost”定

我刚刚使用
net.tcp
实现了一个简单的WCF服务器

首先,我使用
127.0.0.1
作为服务器地址,客户端可以连接WCF服务

一切都好。但是当我尝试使用内部IP
192.x.x.x
时,我得到一个错误:

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

你知道这是什么原因吗

祝福


PS:我在WCF上禁用了身份验证。甚至关闭防火墙所有…不工作…

您在客户端和服务器上都使用192.x.x.x吗?我记得不久前看到一个问题,TCP需要匹配客户端和服务器名称(与消息属性之一相关),因此如果您使用“localhost”定义服务如果逻辑地址相同,并且服务器端点配置了“listenUri”,并且客户端行为配置为使用
地址,则物理客户端和服务地址可能会有所不同。在我们的例子中,这是代理/防火墙配置所必需的。实际上,客户端调用防火墙,服务器在本地侦听转发的请求

对于IIS托管服务,请检查以下各项:

  • 应用程序池已启动且看起来正确(.NET 4 etc/security)
  • 对于NET.TCP,确保网站/应用程序中的“允许协议”(通过高级设置)配置正确:例如http、NET.TCP
  • 对于非IIS托管的服务,可能需要配置命名空间保留(URLACL)


    还要确保相应的Windows服务正在运行,例如Net.Tcp listener。

    如果您是在visual studio中以调试模式运行,请确保您的解决方案端口号匹配。我见过几个实例,其中我选择了属性>Web>自动分配端口,并且来自的端点(在本例中是我的silverlight应用程序)与自动生成的端口不匹配。我通常在.web中将端口更改为1318

    当我忘记安装必要的组件时,我收到了这个错误消息。参见链接

    (步骤摘要)

    • 转到“程序和功能”(通常在控制面板中)
    • 转到“打开或关闭Windows功能”
    • (假设VS2012)转到“.NET Framework 4.5高级服务”->“WCF服务”
    • 启用“TCP激活”

    今天我发现,如果您的WCF服务类中有循环引用,也会出现此错误。我有一个方法无限地调用它自己,并导致了这个错误消息,这就把我带到了这里


    因此,如果其他建议都不起作用,请检查您的代码,看看您是否正在执行任何递归功能,并确保您没有陷入无限循环。

    我通过在应用程序配置中注释此设置来解决此问题:

    <defaultProxy>
          <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
        </defaultProxy>
    
    
    
    或者,运行Fiddler,它将在127.0.0.1接收WCF调用,然后转发它

    完整的场景是,我在对其中一个服务进行WCF调用时遇到了相同的问题。调用将失败,顶层错误消息为“没有端点侦听…”,服务跟踪查看器日志显示内部异常为“无法建立连接,因为目标计算机主动拒绝连接127.0.0.1:8888” “


    原因是我将此配置放在应用程序中以捕获Fiddler中的传出流量。如果此配置已就位,则需要运行Fiddler以进行WCF调用,以使其到达预期目的地。如果Fiddler未运行,则会出现此错误。在这种情况下注释此设置,WCF调用将转到目标。

    能否共享异常堆栈?是。。。你是对的。本地Ip表示应在两侧匹配。。。谢谢你的意思是“如果你用'localhost'定义服务,用192.x.x.x定义客户端”?还要确保相应的Windows服务正在运行,例如Net.Tcp listener。“如果我还有头发的话,它现在已经被拔掉了。”。谢谢你让我摆脱了痛苦!您好@barrypicker:我已经按照您的指示在我的登台服务器上完成了所有设置,但仍然会遇到相同的错误。请您在这方面指导我???@TheProgrammer-验证登台服务器上的防火墙限制。通过carlosfigueira、PeterX和Moby特技替身验证之前的答案。验证包含端口的URL。此外,尝试使用诸如Fiddler之类的工具连接到该服务,以验证WCF服务是否可用。