尝试公开一个nettcp端点的WCF;TCP错误代码10061:由于目标计算机积极拒绝,无法建立连接。

3

我不明白这里的问题是什么。我的wsHttpBinding正常工作。以下是我的配置。非常感谢任何帮助。

<?xml version="1.0"?>
<configuration>
  .....
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="DataService.Service1Behavior"
               name="ODHdotNET.DataService">
        <endpoint 
               address="" 
               binding="wsHttpBinding" 
               bindingConfiguration="largeTransferwsHttpBinding"
               contract="ODHdotNET.IDataService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint 
            address="net.tcp://139.149.141.221:8001/DataService.svc" 
            binding="netTcpBinding" 
            contract="ODHdotNET.IDataService"/>
        <endpoint 
            address="mex" 
            binding="mexHttpBinding" 
            contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://139.149.141.221:8000/DataService.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <wsHttpBinding>
        <binding name="largeTransferwsHttpBinding2" 
                 maxReceivedMessageSize="5000000" maxBufferPoolSize="5000000">
          <security mode ="Message">
            <message clientCredentialType="UserName"/>
          </security>
        </binding>
        <binding name="largeTransferwsHttpBinding" 
                 maxReceivedMessageSize="5000000" maxBufferPoolSize="5000000" />
      </wsHttpBinding>
     </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="DataService.Service1Behavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

编辑:我正在使用Windows服务进行自主托管;我没有使用IIS。

我配置了错误的配置文件。然而,现在我已经配置了正确的配置文件,但是我遇到了以下错误:“元数据包含一个无法解析的引用:'net.tcp://139.149.141.221:8001/DataService.svc'。套接字连接被中止。这可能是由于处理消息时出现错误或远程主机超过接收超时,或者底层网络资源问题所致。本地套接字超时为'00:05:00'。” - Robert Harvey
现有的连接被远程主机强制关闭。根据下面的帖子,我运行了netstat并得到:TCP 139.149.141.221:8001 0.0.0.0:0 LISTENING 4960这不是防火墙问题,没有端口被阻止。如果我尝试使用我知道可用的端口(例如http,并关闭http端点),它仍然无法工作。 - Robert Harvey
@fugu 我知道这是非常非常旧的帖子,但我们也遇到了Windows服务的同样问题,而且它是间歇性的。你能解决它吗? - user3067170
4个回答

2

你的意思是一个WCF客户端会抛出这个错误吗? 如果是的话: 请在命令提示符下运行以下命令: netstat -ona | find "8001" 如果返回数据,请将其发布。


好的,主机已经启动运行了,此端口上没有其他程序。现在,我认为你提供的基础地址过于具体了。你能否尝试去掉“:8000/DataService.svc”这一部分呢?(基础地址被端点使用,它们会添加剩余的URI) - Menahem
嗨@Roel,看起来你忘记将端口号放在双引号中了,应该是这样的:"8001"。 - Menahem

1
您需要为您的IIS添加TCP支持。 要特定启用TCP、MSMQ或命名管道通信,请执行配置与相关协议支持的附加步骤。对于TCP通信,可以使用Appcmd命令行实用程序将默认Web站点绑定到net.tcp端口。Appcmd是一种IIS实用程序,可让您管理虚拟站点、目录、应用程序和应用程序池。
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -
+bindings.[protocol='net.tcp',bindingInformation='808:*']

为了支持其他协议,请运行额外的命令以启用这些协议的默认 Web 站点。此时,您已经在站点级别配置了 net.tcp 协议。
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/OrderServiceHost"
/enabledProtocols:http,net.tcp

请查看以下详细信息:

通过 WAS 将 WCF 服务扩展至 HTTP 之外

在 Windows 激活服务中托管 WCF 服务


非常感谢。请看我的编辑,我不使用IIS进行托管,但我会阅读并查看它是否有所帮助。 - Fugu

0

确保 Windows 防火墙中的端口是开放的


0

在客户端应用程序调用方法时,请确保您的主机正在运行。


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