Ich habe den gesamten Code, der WCF-Aufrufe aufruft, innerhalb einer using-Anweisung in einem Gedanken eingeschlossen, dass das Objekt ordnungsgemäß entsorgt wird. Wenn ich nach einer Ausnahme google "HTTP-Dienst befindet sich bei .. ist zu beschäftigt" Ich fand diesen Link Ссылка , das sagt, sollte keine Verwendung von Anweisungen in typisierten Proxies verwenden. Ist das wirklich wahr? Ich denke, ich habe einen großen Codewechsel (Seufzer). Tritt dieses Problem nur bei typisierten Proxies auf?
Beispielcode:
%Vor% Der Kern des Problems ist: Am Ende Ihres using
-Blocks (was normalerweise eine sehr gute Idee ist!) wird der WCF-Proxy entfernt. Bei der Bereitstellung des WCF-Proxys können jedoch Ausnahmen auftreten, die zu einem Fehlverhalten der App führen. Da dies implizit am Ende des Blocks using
geschieht, sehen Sie möglicherweise nicht einmal wirklich, wo der Fehler auftritt.
Also Microsoft empfiehlt normalerweise ein Muster wie folgt:
%Vor% Sie müssen die Methode proxy.Close()
explizit aufrufen und darauf vorbereitet sein, alle Ausnahmen zu behandeln, die möglicherweise auch von diesem Aufruf auftreten.
Ich mag den Ansatz aus dem Kommentar von "Eric" in diesem Blog (der einem anderen Artikel ähnlich ist: Ссылка ):
"Persönlich möchte ich meine eigene partielle Klasse für den Client erstellen und die Dispose () -Methode überschreiben. Dadurch kann ich den 'using' -Block wie gewohnt verwenden.
%Vor%Tags und Links wcf c# using-statement