TCP错误代码10061:无法建立连接,因为目标机器主动拒绝它 127.0.0.1:8732

Posted

技术标签:

【中文标题】TCP错误代码10061:无法建立连接,因为目标机器主动拒绝它 127.0.0.1:8732【英文标题】:TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:8732 【发布时间】:2014-09-20 06:20:54 【问题描述】:

我有一个使用 Windows 服务的 wcf 服务应用程序。此外,我有一个连接到 wcf 服务的 wpf 应用程序。我一直无法打开 wpf 程序。这是我尝试通过在调试模式下按 F5 从 Visual Studio 打开 wpf 应用程序时遇到的错误:

mscorlib.dll but was not handled in user code

Additional information: Could not connect to net.tcp://localhost:8732/Design_Time_Addresses/NextGenService/SimSession/. The connection attempt lasted for a time span of 00:00:02.2590000. TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:8732.

我确实在所选功能的 wcf 激活节点下同时启用了 Http 和 Non-http 激活选项。与 net.tcp 相关的所有 3 个服务都在运行:Net Pipe Listener Adapter、Net.Tcp Listener Adapter、Net.Tcp Port Sharing Service。

服务器的app.config:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="logFile" value="C:\ProgramData\SimSci\Log\server.log"/>
    <add key="SecureFolder" value="..\..\..\..\..\SharedComponents"/>
    <!--<add key="logLevel" value="Debug"/>-->
    <!--<add key="VariableConnection" value="Connected"/>-->
  </appSettings>

  <system.diagnostics>
    <sources>
      <!--Add below switch when need trace on developer system  -->
      <!--switchValue="Warning, ActivityTracing"-->
      <source name="System.ServiceModel.MessageLogging"  switchValue="Off">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type=""/>
          </add>
          <add name="ServiceModelMessageLoggingListener">
            <filter type=""/>
          </add>
        </listeners>
      </source>
      <!--Add below switch when need trace on developer system  -->
      <!--switchValue="Warning, ActivityTracing"-->
      <source name="System.ServiceModel" switchValue="Off" propagateActivity="true">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type=""/>
          </add>
          <add name="ServiceModelTraceListener">
            <filter type=""/>
          </add>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="..\..\app_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
        <filter type=""/>
      </add>
      <add initializeData="..\..\app_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
        <filter type=""/>
      </add>
    </sharedListeners>
  </system.diagnostics>
  <system.web>
    <compilation debug="true"/>
  </system.web>


  <!-- tempdt timeout values-->
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="NetTcpBinding_ISimSession" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" maxBufferSize="104857600" maxConnections="10" maxReceivedMessageSize="104857600">
          <readerQuotas maxDepth="32" maxStringContentLength="104857600" maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600"/>
          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
          <!--<security mode="Transport">
            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
            <message clientCredentialType="Windows" />
          </security>-->
        </binding>
      </netTcpBinding>
    </bindings>

    <services>
      <service name="SimCentral.Server.SimSession">
        <endpoint address="" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ISimSession" contract="NextGenServices.Contract.ISimSessionService.ISimSession">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8732/Design_Time_Addresses/NextGenService/SimSession/"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="false"/>
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <runtime>
    <gcServer enabled="true"/>
    <gcConcurrent enabled="true"/>
  </runtime>
</configuration>

客户端的app.config

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="ContractType" value="ISimSession"/>
    <add key="ISimSessionNameSpaceVersion" value="http://Invensys.com/SimSci-Esscor/NextGen-Sim/1.0.32.6e"/>
    <add key="Scope" value="aa.soa://SimSession"/>
    <add key="UseASBHost" value="0"/>
    <add key="logFile" value="C:\ProgramData\SimSci\Log\client.log"/>
    <add key="logLevel" value="Debug"/>
  </appSettings>


  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="NetTcpBinding_ISimSession" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="true" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" maxBufferSize="104857600" maxConnections="10" maxReceivedMessageSize="104857600">
          <readerQuotas maxDepth="32" maxStringContentLength="104857600" maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600"/>
          <reliableSession ordered="true" inactivityTimeout="00:10:00"/>
          <!--<security mode="Transport">
            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
            <message clientCredentialType="Windows" />
          </security>-->
        </binding>
      </netTcpBinding>
    </bindings>
    <client>
      <endpoint address="net.tcp://localhost:8732/Design_Time_Addresses/NextGenService/SimSession/" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ISimSession" contract="SimSessionService.ISimSession" name="NetTcpBinding_ISimSession">
        <identity>
          <dns value="localhost"/>
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

我尝试了互联网上的所有建议,但没有一个对我有用。我还能做些什么来解决这个问题吗?谢谢。

【问题讨论】:

@spender 如果是防火墙,客户端很可能会超时。 TCP错误说没有监听进程.. 您不必为那些 TCP 端点添加 IIS 绑定吗?我不确定。 @spender:防火墙应该不是问题。我已经在 windows 防火墙上设置了端口号 8732 以允许通信。 @all:我想通了。我必须将两个解决方案(客户端和服务器)都设置为启动项目才能调用该程序。谢谢你们的帮助 IIS 绑定:打开 IIS -> 站点 -> 默认网站 右键单击 -> 编辑绑定 -> 选择类型:net.tcp 和绑定信息:8732:* 【参考方案1】:

我也遇到了同样的问题。

请检查您的 Windows 服务 OnStart 方法是否有以下行。

serviceHost = new ServiceHost(typeof(**WCFService**));

确保这个 WCFService 实际上是您的 WCF 服务合同类而不是 Windows 服务类。互联网上有一些帖子为 Windows 服务而不是 WCFService 创建此 ServiceHost,这是不正确的。

【讨论】:

HTTP 调用失败的可能原因有数百种。不启动 HTTP 服务是其中之一。此外,如果您尝试在非 WCF 类或接口上启动 ServiceHost,则会收到一个异常告诉您。 我相信这个问题与 net.tcp 绑定而不是 http 绑定有关?你为什么要解释 HTTP 失败? 用 TCP 替换 HTTP,无论如何。关键是,你没有回答这个问题。问题是“为什么我的代码不起作用”,而不是“列出此代码失败的所有可能原因”。您的回答显示了导致此问题的许多可能且非常具体的原因之一,基本上是说明“确保 WCF 服务正在运行”

以上是关于TCP错误代码10061:无法建立连接,因为目标机器主动拒绝它 127.0.0.1:8732的主要内容,如果未能解决你的问题,请参考以下文章

10061错误

连接被对方​​拒绝:10061:无法建立连接,因为目标机器主动拒绝它

TCP 错误代码 10061:无法连接到 net.tcp://。连接尝试持续了 00:00:01.0156241 的时间跨度

socket_connect(): 无法连接 [10061] - 目标机器主动拒绝它

DJANGO EMAIL CONFIRMATION: [WinError 10061] 由于目标机器主动拒绝,无法建立连接

.NET 4 新的 TCP 客户端无法连接:无法建立连接,因为目标机器主动拒绝它