Frage

Guten Tag

Ich laufe in ein merkwürdiges Problem mit WCF und IntelliTrace. Ich habe eine Anwendung, dass ich die Prüfung eines lokal gehosteten WCF-Endpunkt mit (dem Entwicklungsserver in VS2010 gebaut) mit dem Basichttpbinding. Die Anwendung wurde normal ausgeführt. Es sind keine Ausnahmen machen ihren Weg in die App und alle der WCF Anrufe zurückkehren Daten

Auf einer Lerche, entschied ich mich einen Blick auf dem IntelliTrace Ausgang zu nehmen und bemerkte, dass mein erster Aufruf von WCF wirft zwei exceptiosn:

Exception:Thrown: "No connection could be made because the target machine actively refused it" (System.Net.Sockets.SocketException)
A System.Net.Sockets.SocketException was thrown: "No connection could be made because the target machine actively refused it"
Exception:Caught: "No connection could be made because the target machine actively refused it" (System.Net.Sockets.SocketException)
A System.Net.Sockets.SocketException was caught: "No connection could be made because the target machine actively refused it"

Ich habe die Anwendung auf einen trivialen Fall reduziert:

    ServiceClient client = new ServiceClient();
    string[] output = client.LegacyCheck("username");
    Console.WriteLine(output[0]);
    Console.WriteLine(client.GetData(65));

Und ich bekomme das gleiche Verhalten. Der zweite Anruf hat keine Ausnahme zugeordnet ist.

Ich bin verwirrt sehr. Wenn die Verbindung abgelehnt wird, warum dann nicht die Ausnahme nicht auf die Anwendung bilden? Und warum sollte es Erfolg nach 2 fehlgeschlagen versucht?

Jede Hilfe ist willkommen!

War es hilfreich?

Lösung

Für das, was es wert ist, habe ich dieses Verhalten auch bemerkt mit meinem Ironpython / WPF-Anwendungen. Ich habe schließlich erkannt, dass IntelliTrace einfach Sie alle für die Ausnahmen zeigt, die während des normalen Betriebs, selbst wenn sein Teil eines BCL oder andere Bibliothek angehoben und gefangen.

Natürlich können Sie nur Sorge brauchen, um über nicht behandelte Ausnahmen (nachdem sie Ihre Hinrichtung brechen, werden Sie in der Regel diejenigen, die in IntelliTrace als eine lange Kette von Thrown: Caught: Thrown: Caught: sehen .... den ganzen Weg hinunter zu Thrown:, die das letzte Mal sein wird Linie als die Ausnahme nicht abgefangen wurde.

Was ich bin bereit zu wetten, dass die WCF-Code try ist ein paar Dinge zuerst, die SocketExceptions fängt, und setzt sich dann auf seine fröhliche Art und Weise. Sie würden dies nicht immer sehen, aber für IntelliTrace:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top