Umgang mit dem Neustart des WCF-Dienstes auf Clientseite

Ich habe einen GUI-Client, der gegen einen läuftWCF Dienste, die als Windows-Dienst auf einer Server-Box gehostet werden. Der WCF-Dienst wird in PerCall InstanceContextMode ausgeführt, und der Client verfügt über eine Singleton-Instanz des Dienstclients. Ich möchte vermeiden, den Singleton bei jedem Aufruf erneut zu aktivieren, da dies den vielen asynchronen Aufrufen, die ich habe, das Leben schwer macht.

Das Problem für mich ist, dass nach dem Neustart des Windows-Dienstes jedes Mal, wenn der Client einen Anruf tätigt, eine Ausnahmemeldung wie die folgende angezeigt wird:

Dieser Kanal kann nicht mehr zum Senden von Nachrichten verwendet werden, da die Ausgabesitzung aufgrund eines vom Server initiierten Herunterfahrens automatisch geschlossen wurde. Deaktivieren Sie das automatische Schließen, indem Sie DispatchRuntime.AutomaticInputSessionShutdown auf false setzen, oder ändern Sie das Protokoll zum Herunterfahren mit dem Remoteserver.

Wie kann man das am besten umgehen? Ich kann Try-Catch-Klauseln um alle Aufrufe an den Service-Client setzen und die Singleton-Instanz bei Kommunikationsausnahmen erneut instanziieren, aber das wird eine Menge Boilerplate-Code beinhalten.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage