Das Auslösen einer FaultExceptionT aus einem WCF-Dienst verursacht "Der Ersteller dieses Fehlers hat keinen Grund angegeben."

8

Wenn ein FaultException<CustomFault> wie folgt geworfen wird:

%Vor%

Ich bekomme Folgendes: "Der Urheber dieses Fehlers hat keinen Grund angegeben." Nach diesem MSDN-Artikel ist es nicht erforderlich, dass FaultReason

Ich habe den folgenden Servicevertrag:

%Vor%

Es gibt einen Kommentar zum MSDN-Artikel, der andeutet, dass es zwingend erforderlich ist, das andere FaultReason zu verwenden, aber an mehreren anderen Orten habe ich Leute gesehen, die argumentieren, dass Sie das FaultReason nicht verwenden sollten.

Also meine Frage ist wie folgt; Ist es wirklich obligatorisch, FaultReason zu verwenden und wenn nicht - wie kann ich verhindern, dass die Ausnahme ausgelöst wird, wenn versucht wird, eine FaultException zu werfen?

BEARBEITEN

Beim Ausführen des Beispielprojekts aus diesem Artikel bekomme ich das gleiche Verhalten. Vielleicht wird es durch ein Update in .NET verursacht und die Dokumentation / Beispiele werden nicht aktualisiert.

    
Nicklas Møller Jepsen 08.03.2012, 08:55
quelle

1 Antwort

9

Der Fehler Grund ist erforderlich , während die Details optional sind .

WCF verwendet den Wert der FaultException.Reason -Eigenschaft für Füllen Sie das Element <faultstring> des SOAP-Fehlers aus, der für die SOAP-Spezifikation erforderlich ist :

  

Fehlerzeichenfolge
  Das faultstring Element soll eine menschliche lesbare Erklärung des Fehlers zur Verfügung stellen und ist nicht für algorithmic bestimmt   wird bearbeitet. [...] Es MUSS in einem SOAP Fault Element vorhanden sein und   SOLLTE mindestens einige Informationen zur Verfügung stellen, die die Art der   Fehler.

Daher müssen Sie einen Grund für den Fehler angeben, wenn Sie eine FaultException auslösen von einem WCF-Dienst.

    
Enrico Campidoglio 08.03.2012, 09:16
quelle

Tags und Links