Widziałem podobne pytania tutaj, ale nie mogłem znaleźć odpowiedzi. mam aplikację, która używa WCF do otwierania połączenia z adresem zdalnym, czasami gdy zabijam aplikację od menedżera zadań lub aplikacja nieoczekiwanie zamyka połączenie, a następnie po ponownym uruchomieniu aplikacji otrzymuję wyjątek informujący mnie, że jest już słuchacz na tym porcie.Połączenia WCF tcp pozostają otwarte po zabiciu procesu
kilka pytań:
- dlaczego takie połączenia pozostają otwarte po tym jak zabić proces?
- Jak mogę zamknąć te połączenia, gdy proces kończy się nieprzyzwoicie?
- Jak mogę zamknąć połączenia, zanim spróbuję utworzyć nowy?
strona 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;
mógłbyś podać jakiś kod po stronie serwera – Alex
dodanego kodu – meirrav