Mam aplikację kliencką, która próbuje co 10 sekund, aby wysłać wiadomość przez usługę WWW WCF. Ta aplikacja kliencka będzie znajdować się na komputerze znajdującym się na pokładzie statku, który, jak wiemy, będzie miał nierówną łączność internetową. Chciałbym, aby aplikacja próbowała wysyłać dane za pośrednictwem usługi, a jeśli nie, aby umieścić w kolejce wiadomości, dopóki nie wyśle ich za pośrednictwem usługi.Odzyskiwanie z wyjątku wyjątku CommunicationObjectFaultedException w WCF
Aby przetestować tę konfigurację, uruchamiam aplikację kliencką i usługę internetową (obie na moim komputerze lokalnym) i wszystko działa poprawnie. Próbuję symulować złe połączenie internetowe, zabijając usługę internetową i restartując ją. Jak tylko zabiję usługę, zacznę uzyskiwać komunikat CommunicationObjectFaultedExceptions - co jest oczekiwane. Ale po ponownym uruchomieniu usługi nadal otrzymuję te wyjątki.
Jestem prawie pewien, że jest coś, czego nie rozumiem w paradygmacie usługi sieciowej, ale nie wiem, co to jest. Czy ktokolwiek może zaoferować porady dotyczące tego, czy konfiguracja jest możliwa, a jeśli tak, jak rozwiązać ten problem (np. Ponownie ustanowić kanał komunikacji z usługą sieciową)?
Dzięki!
Klay
+10 gdybym mógł - wow, to zachowanie jest całkowicie pod radar, nigdy nie pracował, co się dzieje gdybym nie natknął się na tę odpowiedź. –
Bravo! Zaimplementowałem wersję tego jako metodę rozszerzenia: TryDispose na klasie proxy do użytku przez innych. –
@ Moby's Stunt Double - czy jesteś w stanie udostępnić swój kod? – RichardHowells