WCF客户端仅适用于本地主机

时间:2013-06-18 12:04:46

标签: c# wcf client-server ip-address

我在控制台进程中托管了一个wcf服务。 服务端点创建是通过代码完成的,在program.cs文件中使用net tcp binding。

通过代码完成通道的客户端创建。

此设置在本地主机中正常工作。但是如果我在其他机器上托管该服务,并且如果我尝试从其他机器连接到服务(客户端IP地址更新),那么我得到以下错误。

System.ServiceModel.EndpointNotFoundException:无法连接到net.tcp://10.10.1.1:8232/Service /。连接尝试持续时间跨度为00:00:00。 TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它10.10.1.1:8232。 ---> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它10.10.1.1:8232

注意: 其他场景=>服务和客户端在同一台机器上运行。

在服务主机中添加服务端点URL地址为127.0.0.1。

在客户端,如果我指定同一台机器的IP地址,则无法连接到该服务。

但是如果我在服务端点配置中指定 localhost 而不是127.0.0.1,我就能够成功连接到服务。

我不确定为什么它不适用于127.0.0.1,但可以在同一台机器上使用本地主机。这是预期的吗?

即使在本地主机更改后,我也无法连接到其他机器中的服务。

欢迎任何建议。

防火墙不会阻止端口。

**服务器端配置代码**,

var tcpBinding = new NetTcpBinding(SecurityMode.None)
        {
            MaxBufferPoolSize = int.MaxValue,
            MaxBufferSize = int.MaxValue,
            MaxReceivedMessageSize = int.MaxValue,
            ReaderQuotas =
            {
                MaxArrayLength = int.MaxValue,
                MaxNameTableCharCount = int.MaxValue,
                MaxStringContentLength = int.MaxValue,
                MaxDepth = int.MaxValue,
                MaxBytesPerRead = int.MaxValue
            },
            ReceiveTimeout = TimeSpan.MaxValue
        };

var host = new ServiceHost(typeof(Service));

        host.AddServiceEndpoint(typeof(IService), tcpBinding, "net.tcp://localhost:8232/Service/");


        host.Open();

        Console.ReadLine();

        host.Close(); `

** Clinet侧配置**

    string endPointAdress = "net.tcp://10.10.1.1:8232/Service";       

var ServiceProxy = ChannelFactory.CreateChannel(                 tcpBinding,新的EndpointAddress(endPointAdress));

* / tcp绑定对于客户端和服务都是相同的。

这个问题是否会因数据合同而发生?但如果它不适用于本地主机也是如此。 如果我的理解是错误的,请更正。

解决方案

更改服务器配置

** net.tcp://127.0.0.1:8232 / Service / **到** net.tcp:// localhost:8232 / Service / ** 似乎解决了这个问题。并且所提到的解决方案可能对某些人有所帮助。可能有人可以帮忙为什么呢?谢谢大家。

0 个答案:

没有答案