无法连接到net.tcp:// localhost ... TCP错误代码10061

时间:2011-07-19 13:31:08

标签: windows-services nettcpbinding net.tcp wcf

参考有关Windows服务中WCF服务的视频tutorial,我创建了一个示例WCF服务,并在Windows服务中使用netTcpBinding托管该服务。(因为我希望此WCF服务作为Windows服务运行)< / p>

它是一个简单的服务,添加/删除/加载员工的详细信息,并由Windows窗体应用程序使用。当我构建整个解决方案(包括wcf服务+ Windows服务+客户端应用程序)时工作正常,但是当我想验证我的客户端没有直接引用解决方案中的项目,所以我从我的解决方案中排除了两个服务(wcf + windows)。它停止工作抛出错误,阅读:

无法连接到net.tcp:// localhost:8010 / EmployeeService.Service1 /。连接尝试持续时间跨度为00:00:02.0180000。 TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8010。

可能有助于回答的重点:

  • WCF服务和Windows服务具有相同的app.config
  • Windows服务作为服务运行

这是我的客户端app.config

<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <system.serviceModel>
            <bindings>
                <netTcpBinding>
                    <binding name="netTcpEndPoint" closeTimeout="00:01:00" openTimeout="00:01:00"
                        receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false"
                        transferMode="Buffered" transactionProtocol="OleTransactions"
                        hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                        maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                        maxReceivedMessageSize="65536">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <reliableSession ordered="true" inactivityTimeout="00:10:00"
                            enabled="false" />
                        <security mode="Transport">
                          <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                            <message clientCredentialType="Windows" />
                        </security>
                    </binding>
                </netTcpBinding>
            </bindings>
            <client>
                <endpoint address="net.tcp://localhost:8010/EmployeeService.Service1/"
                    binding="netTcpBinding" bindingConfiguration="netTcpEndPoint"
                    contract="Service1.IService1" name="netTcpEndPoint">
                    <identity>
                        <userPrincipalName value="user@company.com" />
                    </identity>
                </endpoint>
            </client>
        </system.serviceModel>
    </configuration>

任何帮助都将非常感谢....

2 个答案:

答案 0 :(得分:3)

自己找到了答案,希望能帮助其他人寻找答案......

我发现没有触发worker_DoWork()事件,所以添加worker.RunWorkerAsync();如下面的代码所示,您的Windows服务

protected override void OnStart(string[] args)
{                    
    worker = new BackgroundWorker();
    worker.RunWorkerAsync();
    worker.DoWork += new DoWorkEventHandler(worker_DoWork);                
}

从客户端项目中删除服务引用,再次添加,因为它会对您的app.config文件进行更改。

答案 1 :(得分:0)

只是一个可以帮助一些人的快速笔记:

控制Perkin Elmer的两台计算机之间出现了这个错误 - 赛默飞世尔科技液体处理设备(机器人)。

McAfee Antivirus干扰了他们的通信并卸载McAfee消除了错误。 MS Security Essentials Antivirus不会干扰。