Mam poczucie gospodarzem usług wcf przy użyciu wywołania zwrotnego tcp dupleksu nettoWCF zwrotna tcp dupleksu netto tylko 1 sposób zarzucić
po stronie klienta, słucham na razie na nic zarzucić Channel i ChennelFactory. po uszkodzeniu kanału klient odtworzy kanał i ponownie go zasubskrybuje.
po stronie serwera, przechowuję kanał zwrotny i zapisuję numer referencyjny kanału, dzwoniąc pod numer OperationContext.Current.Channel
, aby umożliwić odsłuchanie zakończonego błędem i zamkniętego zdarzenia na tym kanale. W przypadku błędu serwer usunie tego subskrybenta.
To działa przez większość czasu, aż do niedawna zaobserwowałem nieoczekiwane zachowanie: kanał zwrotny jest uszkodzony na serwerze, ale kanał wydaje się być w porządku po stronie klienta, co prowadzi do tego, że klient nie subskrybuje ponownie, gdy serwer został już usunięty abonent i klient nie otrzymają żadnego połączenia zwrotnego.
Myślałem, że w komunikacji dwustronnej, jeśli wykryty zostanie jeden koniec błędu, kanał dupleksowy powinien zostać uszkodzony.
Niezawodny sesja jest włączony i czas oczekiwania jest bardzo długi (2 godziny) (może to może prowadzi do klienta końcowego usterkę czujnika nie wystarczająco szybki?)
Czy ktoś może wyjaśnić, dlaczego tak się dzieje?
Innym pytaniem jest, dlaczego jest on wadliwy? Mam 40 klientów połączonych, ale serwer wykrył losowego klienta, którego dotyczy błąd w losowym czasie.