无法从LAN上的远程客户端访问控制台托管的WCF服务

时间:2014-06-26 07:51:10

标签: c# wcf networking .net-4.5

现在,我尝试从局域网上的另一台计算机访问我的WCF服务,但无法访问它。

但在当地它的工作正常。

我能找到的大多数类似问题都是使用IIS来托管服务。

我试图关闭防火墙,但我无法取得任何效果。

以下是配置文件,请询问您是否需要更多:

客户的App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
    </startup>
    <system.serviceModel>
        <client>
            <endpoint name="default"
                      address="http://myhostIP:3100/"
                      binding="basicHttpBinding"
                      contract="ServiceInterface.IService"/>
        </client>
    </system.serviceModel>
</configuration>

这是Host App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
    </startup>
    <system.serviceModel>
        <services>
            <service name="ServiceTest.Service">
                <endpoint address="http://0.0.0.0:3100"
                          contract="ServiceInterface.IService"
                          binding="basicHttpBinding"/>
            </service>
        </services>
    </system.serviceModel>
</configuration>

如果你们有任何想法...... 我无法找到任何信息

编辑:

我使用控制台应用程序来托管服务

本地和远程主机的Telnet连接正在运行

编辑2:

我刚刚看到我在复制App.config文件时犯了一个错误。绑定类型应为wsDualHttpBinding而不是basicHttpBinding

我也可能收到错误消息:

第一个问题是&#34;来电者无法通过WCF服务进行识别&#34;

然后我尝试将安全性设置为无(用于故障排除)并且我只有超时异常

编辑3:

在控制台应用中:

static void Main(string[] args)
{
   ServiceHost host = new ServiceHost(typeof(ServiceTest.Service));
   host.Open();
   Console.WriteLine("Server Started");
   Console.ReadLine();
}

编辑4:

此处提供了完整的解决方案https://github.com/sidewinder94/smallChatSolution

1 个答案:

答案 0 :(得分:1)

以下是您的问题的解决方案。

客户端的应用配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
    </startup>
    <system.serviceModel>
        <client>
            <endpoint name="default" 
                      contract="ChatDllContracts.IService" 
                      binding="netTcpBinding" 
                      address="net.tcp://myHostIp:3100/"
                      bindingConfiguration="mynet"/>
        </client>
        <bindings>
            <netTcpBinding>
                <binding name="mynet" sendTimeout="00:00:05" portSharingEnabled="true">
                    <security mode="None" />
                </binding>
            </netTcpBinding>
        </bindings>
    </system.serviceModel>
</configuration>

ChatServer的app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
    </startup>

    <system.serviceModel>
        <services>
            <service name="ChatDll.Service">
                <endpoint contract="ChatDllContracts.IService"
                          binding="netTcpBinding"
                          address="net.tcp://localhost:3100"
                          bindingConfiguration="mynet"/>
            </service>
        </services>
        <bindings>
            <netTcpBinding>
                <binding name="mynet" sendTimeout="00:00:05" portSharingEnabled="true">
                    <security mode="None" />
                </binding>
            </netTcpBinding>
        </bindings>
    </system.serviceModel>
</configuration>

请注意,您需要启用 Net.Tcp端口共享服务(在服务器和客户端)以使其正常工作。