我已经实现了一个简单的聊天控制台应用程序,它运行良好。当我试图在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;
}
答案 0 :(得分:0)
假设您要显示所有代码。
您需要在host.Open();之后添加一行,您可以添加Console.ReadLine();
这将使程序停止现有。现在发生的事情是主机打开,然后程序存在,主机被关闭/垃圾收集。
答案 1 :(得分:0)
我已经解决了。 在GUI中删除定义的新ServiceHost中的(使用)。为什么我不知道但它有效!!!
ServiceHost host;
host = new ServiceHost(typeof(Service), new Uri("net.tcp://localhost:4111"));