WCF服务未托管在计算机上

时间:2012-02-05 00:40:43

标签: c# wcf

我已经实现了一个简单的聊天控制台应用程序,它运行良好。当我试图在GUI应用程序上应用相同的概念时。服务方面托管时,有任何错误,但如果我使用CMD命令netstat -ao显示所有端口,它不存在。所以当我运行客户端应用程序,有一个例外(没有连接可以因为目标机器积极拒绝)。我该如何解决这些问题?

服务器

ServiceHost host;
using (host = new ServiceHost(typeof(Service), new Uri("net.tcp://localhost:4111")))
{
    host.AddServiceEndpoint(typeof(IService), new NetTcpBinding(), "IService");

    try
    {
        host.Open();

    }
    catch
    {
    }
}

客户端

public bool Connect()
{
    DuplexChannelFactory<IService> pipeFactory = new DuplexChannelFactory<IService>(new InstanceContext(this),
                                                                                    new NetTcpBinding(),
                                                                                    new EndpointAddress(AppConfiguration.GetValue(net.tcp://localhost:4111/IService"));

    try
    {
        pipeProxy = pipeFactory.CreateChannel();
        if (pipeProxy.Register())
        {
            return true;
        }
    }
    catch
    {
    }
    return false;
}

2 个答案:

答案 0 :(得分:0)

假设您要显示所有代码。

您需要在host.Open();之后添加一行,您可以添加Console.ReadLine();

这将使程序停止现有。现在发生的事情是主机打开,然后程序存在,主机被关闭/垃圾收集。

答案 1 :(得分:0)

我已经解决了。 在GUI中删除定义的新ServiceHost中的(使用)。为什么我不知道但它有效!!!

ServiceHost host;
host = new ServiceHost(typeof(Service), new Uri("net.tcp://localhost:4111"));