Ho visto domande simili qui ma non ho trovato risposta. Ho un'app che usa WCF per aprire una connessione a un indirizzo remoto, a volte quando uccido l'app dal task manager o l'app si chiude in modo non vergognoso, la connessione rimane aperta e quando riavvio la mia app ottengo un'eccezione che mi dice che c'è già un ascoltatore su questa porta.Le connessioni TCPC WCF rimangono aperte quando il processo viene interrotto
alcune domande:
- perché tale collegamenti restano aperti dopo che ho ucciso il processo?
- Come posso chiudere queste connessioni quando il processo si chiude in modo non corretto?
- Come posso chiudere le connessioni prima di provare a crearne una nuova?
lato Serer:
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;
Potrebbe fornire qualche codice lato server – Alex
aggiunto un certo codice – meirrav