我在这里看到类似的问题,但找不到答案。我有一个应用程序,使用WCF打开连接到远程地址,有时当我从任务管理器中关闭应用程序或应用程序关闭时,连接保持打开,然后当我重新启动我的应用程序时,我收到一个异常,告诉我已经存在这个端口上的一个监听者。WCF tcp连接在进程死亡时保持打开状态
几个问题:
- 为什么这样的连接保持打开后,我杀死进程?
- 当进程非正常关闭时,如何关闭此连接?
- 在尝试创建新连接之前,如何关闭连接?
塞雷尔语方:
var url = Config.GetRemoteServerUrl();
var binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.None;
binding.ReliableSession.Enabled = Config.RelaiableSession;
binding.ReliableSession.InactivityTimeout = TimeSpan.MaxValue;
binding.MaxConnections = Config.MaxConcurrentSessions;
binding.ReaderQuotas.MaxArrayLength = Config.ReaderQuotasMaxArrayLength;
binding.MaxReceivedMessageSize = Config.MaxReceivedMessageSize;
binding.SendTimeout = new TimeSpan(0,0, 0, 0,Config.SendTimeout);
binding.OpenTimeout = new TimeSpan(0,0, 0, 0,Config.OpenTimeout);
host = new ServiceHost(ServerFacade.Instance, new Uri[] { new Uri(url) });
host.AddServiceEndpoint(typeof(ITSOServiceContract), binding, url);
host.Open();
serverFacade = host.SingletonInstance as IServerFacade;
你能否提供一些服务器端代码 – Alex 2013-03-21 09:06:31
添加一些代码 – meirrav 2013-03-21 09:14:12