Wiederherstellen von einem CommunicationObjectFaultedException in WCF
Ich habe eine client-app, die versucht alle 10 Sekunden eine Nachricht zu senden, über einen WCF-service. Diese client-app wird auf einem computer an Bord eines Schiffes, von denen wir wissen, haben fleckige internet-Konnektivität. Ich möchte mich für die app, um zu versuchen, die Daten zu senden über den Dienst, und wenn es nicht kann, Warteschlange die Nachrichten, bis Sie es können, senden Sie über den Dienst.
Um zu testen, dieses setup, ich starte den client-app und dem web service (sowohl auf meinem lokalen Rechner), und alles funktioniert einwandfrei. Ich versuche zu simulieren, die schlechte internet-Verbindung durch die Tötung des web-Dienstes und Neustart. Sobald ich töten, der service, fange ich CommunicationObjectFaultedExceptions--was zu erwarten ist. Aber nachdem ich den Dienst neu starten, ich weiterhin die Ausnahmen.
Ich bin mir ziemlich sicher, dass es etwas, was ich nicht bin Verständnis über die web-service-Paradigma, aber ich weiß nicht, was das ist. Kann mir jemand beraten, ob oder ob nicht dieses setup ist machbar, und wenn ja, wie dieses Problem zu beheben (D. H. die Wiederherstellung der Kommunikations-Kanal mit dem web-service)?
Dank!
Klay
Du musst angemeldet sein, um einen Kommentar abzugeben.
Client-service-proxies können nicht wiederverwendet werden, wenn Sie einmal ausfallen sollte. Sie müssen entsorgen Sie das alte und erstellen Sie eine neue.
Müssen Sie auch sicherstellen, dass Sie in der Nähe des Kunden-service-proxy korrekt. Es ist möglich für einen WCF-service proxy eine exception werfen Sie auf schließen, und wenn dies geschieht, die Verbindung wird nicht geschlossen, so dass Sie Abbrechen müssen. Verwenden Sie das "try{Schließen}/catch{Abbrechen}" Muster. Bedenken Sie auch, dass die dispose-Methode aufruft, in der Nähe (und daher kann eine Ausnahme von der Entsorgung), so können Sie nicht einfach eine mit wie mit normalen Einweg-Klassen.
Beispiel:
Gibt es einen blog-Artikel über dieses hier