WCF CommunicationState

0

Witam

Mam taki problem z WCF'em, że w przypadku kiedy wyłączam aplikację serwera to w kliencie WCF'owym nie dostaję żadnego zdarzenia dotyczącego uszkodzonego połączenia, a "ChannelFactory.State", "InnerChannel.State" oraz "InnerDuplexChannel.State" są w stanie "Opened".
Jeżeli sytuacja jest taka, że w wyniku jakiegoś błędu po stronie serwera połączenie wcf zostanie uszkodzone, ale aplikacja serwera nadal pracuje i możliwe jest ponowne podłączenie się do serwera wcf, to otrzymuję odpowiednie zdarzenie, a stany odpowiednich kanałów są Faulted. Czy ktoś wie z czego to może wynikać? Z góry dzięki za info.

Pzdr

0

pierwsze z brzegu http://stackoverflow.com/questions/1995520/check-wcf-connection ale ty to przecież wiesz bo szukałeś i poczytałeś sobie o tym...

0
Misiekd napisał(a)

pierwsze z brzegu http://stackoverflow.com/questions/1995520/check-wcf-connection ale ty to przecież wiesz bo szukałeś i poczytałeś sobie o tym...

Dzięki za odpowiedź, ale zauważ że nie pytałem się jak sobie poradzić ze stanem połączenia, a jedynie z czego to może wynikać. Rzeczywiście u siebie oprócz sprawdzenia state'a kanałów to opieram się na wyjątkach.
Ciekawy jestem jednak czy to jest kwestia jakichś ustawień wcf'a czy coś takiego, tym bardziej, że wcześniej działało mi to bez problemów, tzn. kiedy była wyłączana usługa serwera dostawałem odpowiednie zdarzenie i state'y wskazywały na uszkodzone połączenie. Podejrzewam, że coś się zmieniło w ustawieniach serwera lub w zasadzie działania i szukam teraz informacji z czego takie działanie może wynikać.

Tym niemniej muszę dodać że szukałem i czytałem, ale nie znalazłem odpowiedzi na swoje pytanie.

Pzdr

0

wynika to z prostego faktu, że chyba żadna warstwa (a na pewno tcp/udp) protokołu sieciowego nie oferuje takiego bajeru. Jak masz dwa kompy połączone kabelkiem do dwóch switchów a te switche między sobą to mogę przyjść i przeciąć Ci kabelek łączący te switche. Dla komputerów nic się nie zmieniło bo oba nadal wykrywają, że do gniazda sieciowego coś jest podpięte i to coś "gada", ale że już te cosie między sobą nie gadają to inna bajka.

0
Misiekd napisał(a)

wynika to z prostego faktu, że chyba żadna warstwa (a na pewno tcp/udp) protokołu sieciowego nie oferuje takiego bajeru. Jak masz dwa kompy połączone kabelkiem do dwóch switchów a te switche między sobą to mogę przyjść i przeciąć Ci kabelek łączący te switche. Dla komputerów nic się nie zmieniło bo oba nadal wykrywają, że do gniazda sieciowego coś jest podpięte i to coś "gada", ale że już te cosie między sobą nie gadają to inna bajka.

Widzisz, nie do końca tak jest. Jeżeli używasz protokołu TCP/IP i ktoś przetnie kabelek to isConnected=True tylko i wyłącznie do czasu aż np. nie spróbujesz czegoś wysłać. Wtedy otrzymujesz stosowny Exception i po takiej operacji isConnected=False i takie coś to rozumiem.
U mnie w wcf'ie, gdzie de facto używam bindingu TCP/IP, mimo wysyłania różnych danych i otrzymania Exception, połączenie jest nadal widoczne jako prawidłowe. I to mnie właśnie ciekawi...

0

bo to nie jest stan gniazda tylko obiekt używanego do połączenia http://msdn.microsoft.com/en-us/library/system.servicemodel.communicationstate.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1