System.ServiceModel.EndpointNotFoundException:无法连接到net.tcp://127.0.0.1/TestService

时间:2017-03-19 23:53:30

标签: c# wcf sockets tcp

我正在托管我的服务:

  using (ServiceHost sHost = new ServiceHost(typeof(Class1)))
                {
                    sHost.Open();
                }

               // sHost.Open();
                Console.WriteLine("Service Started....");
                Console.ReadLine();

尝试使用渠道工厂使用该服务:

  ChannelFactory<IService1> factory = new ChannelFactory<IService1>("");

            var proxy = factory.CreateChannel();
            var result = proxy.DoProcessing();

我可以通过端点看到服务已启动,但是当我尝试创建频道时,会出现以下错误。

  

测试方法TestService.Test.UnitTest1.TestMethod1抛出异常:   System.ServiceModel.EndpointNotFoundException:无法连接到net.tcp://127.0.0.1/TestService。连接尝试持续时间跨度为00:00:01.0017385。 TCP错误代码10061:   无法建立连接,因为目标计算机主动拒绝它127.0.0.1:808。 ---&GT; System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:808

这是我的服务配置

    <services>
        <service name="Service1.ClassLibrary.Class1">
            <endpoint
              address="net.tcp://127.0.0.1/TestService"
              binding="netTcpBinding"
              contract="Service1.Interface.IService1" />

        </service>
    </services>
</system.serviceModel>

客户端配置:

<client>
  <endpoint address="net.tcp://127.0.0.1/TestService" binding="netTcpBinding"
                contract="Service1.Interface.IService1" />

</client>

1 个答案:

答案 0 :(得分:0)

问题在于:

using (ServiceHost sHost = new ServiceHost(typeof(Class1)))
                {
                    sHost.Open();
                }

using bloick自动关闭服务主机,因此客户端无法使用。

相反,这很完美:

 ServiceHost sHost = new ServiceHost(typeof(Class1));
    sHost.Open();
    Console.WriteLine("Service Started....");
   //Keeps Servece Open
    Console.ReadLine();
 sHost.Close()