2009-08-18 7 views
0

OK, ich bin ein bisschen verwirrt hier. Ich habe einen WCF-Dienst (Dienst A), der einen anderen WCF-Dienst (Dienst B) aufruft. Wenn ich eine Ausnahme auf Dienst B, z. throw new Exception("test") dann erhält der Dienst A keine Ausnahme, stattdessen wird der IsFault in der Antwortnachricht auf "true" gesetzt, z.WCF IsFault und FaultException

responseMessage = forwardingChannel.Process(message) 
if (responseMessage.IsFault) { 
    // Yes, there is a fault 
} 

Ich erwartete, dass ich einen try-catch um die Process-Methode setzen und die Ausnahme erhalten konnte. Könnte mir bitte jemand erklären, was hier vor sich geht?

Dank

Antwort

1

Wenn Service A ein Java-Service, würden Sie erwarten von Calling Service B eine .NET-Ausnahme zurück zu bekommen?

Standardmäßig wird eine nicht behandelte Ausnahme in einem WCF-Dienst als Fehler zurückgegeben. Wenn der Dienst SOAP verwendet, wird dieser als SOAP-Fehler zurückgegeben. In einem normalen WCF-Client wird dies in eine FaultException übersetzt.

+0

OK danke für die Antwort, aber wie erhalten Sie die SOAP Fault in eine FaultException übersetzt? Warum passiert das nicht automatisch bei meinem WCF-Dienst, sondern bei einem Client? Noch einmal vielen Dank –

+0

Wenn Sie in einem Client Service-Referenz hinzufügen verwenden, wird eine vom Dienst _will_ zurückgegebene SOAP-Fault in eine FaultException umgesetzt. –

+0

Ja, aber im Falle eines Vermittlungsdienstes haben Sie keine Referenz auf die gleiche Weise, also wie übersetzen Sie sie dann? Danke –

Verwandte Themen