Ich bin verwirrt darüber, wie ich Fehler an einen Client mit SOAP zurückgeben sollte.WCF Fehler mit SOAP
Ich habe einen WCF-Service, aber ich bin mir nicht sicher, welche Technologie der Client verwendet, also würde ich gerne die SOAP-Spezifikation bleiben.
Soweit ich gelesen habe, scheinen Fehlermeldungen der beste Weg, damit umzugehen.
ich meinen Dienst mit vielen verschiedenen möglichen Fehler sehen:
- Null \ Datenfehler zu erwarten
- Datenformatfehler (zB: db erlaubt nur 3 Zeichen)
- Datenbereich Fehler „Kunde bereits Ihre Anfrage ‚Typfehler vorliegt“,‘Kann nicht
Wäre es richtig sein, ein neues Objekt für jeden dieser Fehler verarbeiten und als solche werfen zu erstellen:
Der Client übergibt große Objekte mit vielen Eigenschaften an praktisch jede Methode (dh: Kunde, Bestellung usw.).
Wäre dies der richtige Weg, Fehler zu behandeln und an den Client zurückzusenden?
Es scheint fehl am Platz zu sein, jeden Fehler zu den Attributen oberhalb der Methode hinzuzufügen.
IE:
[OperationContract]
[FaultContract(typeof(NullFault))]
[FaultContract(typeof(InvalidDataFault))]
[FaultContract(typeof(ArguementFault))]
[FaultContract(typeof(RangeFault))]
void CreateCustomer(Customer customer);
Auch was ist mit einem GenericFault? Wie würden Sie mit Geschäftsregelfehlern umgehen? zB: Kunde existiert bereits, zu viele Einzelposten, versenden nicht in diesen Bereich, Zahlungsart nicht akzeptiert, etc.?
Bitte lassen Sie mich wissen, ob diese Methode korrekt ist oder ob es eine andere akzeptierte Lösung gibt und wie Sie die "Geschäftsregel" -Situation behandeln würden.
Danke John für Ihre Antwort. I schnelle Followup-Frage: Wenn Sie mit dem einzigen Fehler Weg gehen würden, glauben Sie, es wäre eine gute Idee, eine Enum-Eigenschaft des Fehlertyps zu erstellen (dh: NullReference, Range, InvalidData, BusinessRule, Other)? Wissen Sie, ob diese Enum auch in der Soap-Nachricht übergeben werden? Danke, Steven – stevenrosscampbell
Sie könnten eine solche Enum zurückgeben, aber denken Sie daran, dass Ihre Kunden diese Informationen betrachten und etwas damit tun müssen. Wenn sie mit den Informationen, die Sie ihnen schicken, nicht programmatisch vorgehen, senden Sie sie nicht. –
Ja, ich stimme zu. Ich denke, alles, was ich tun kann, ist, ihnen davon zu erzählen und zu hoffen, dass sie es entsprechend benutzen. Danke, Steven – stevenrosscampbell