Fehlerberichterstattung beim WSD-Scandienst
In diesem Abschnitt wird beschrieben, wie ein WSD-Scandienst Vorgangsfehlercodes generiert und sendet. Fehlercodes, die von den meisten Vorgängen zurückgegeben werden können, werden unter Allgemeine Fehlercodes für den WSD-Scandienstvorgang beschrieben.
Wenn beim WSD-Überprüfungsdienst beim Verarbeiten eines Xxx-Anforderungsvorgangs ein Fehler auftritt, gibt er anstelle eines XxxResponse-Elements einen Fehlercode zurück. Der Scan-Dienst gibt Fehlercodes im <soap:Fault-Element> zurück.
Alle Fehlermeldungen, die innerhalb des WSD-Überprüfungsdiensts definiert sind, müssen gemäß den Regeln gesendet werden, die in der Spezifikation der Webdienstadressierung (WS-Addressing) beschrieben sind. Insbesondere sollte der WSD-Scandienst Fehlermeldungen an die folgenden Speicherorte senden:
Der [Fehlerendpunkt], wenn er vorhanden und gültig ist.
Andernfalls der [Antwortendpunkt], wenn er vorhanden ist.
Andernfalls der [Quellendpunkt].
Endpunkte müssen erforderliche Nachrichteninformationsheader für alle Fehlernachrichten enthalten. Fehlermeldungen werden als Antworten korreliert, indem die [relationship]-Eigenschaft verwendet wird, wie in WS-Addressing definiert. Die folgende [action]-Eigenschaft legt Fehlermeldungen fest:
https://schemas.xmlsoap.org/ws/2004/08/addressing/fault
Die Definitionen von Fehlern verwenden die folgenden Eigenschaften:
Fehlereigenschaft | Definition |
---|---|
[Code] | Der Fehlercode. |
[Untercodierung] | Der Fehlersubcode. |
[Grund] | Das Grundelement der englischen Sprache. |
[Detail] | Das Detailelement. Wenn dieses Element nicht vorhanden ist, wird kein Detailelement für den Fehler definiert. |
Diese Eigenschaften binden an einen SOAP 1.2-Fehler, wie das folgende Codebeispiel zeigt.
<S:Envelope>
<S:Header>
<wsa:Action>https://schemas.xmlsoap.org/ws/2004/08/addressing/fault</wsa:Action>
<!-- Headers excluded for clarity -->
</S:Header>
<S:Body>
<S:Fault>
<S:Code>
<S:Value>[Code]</S:Value>
<S:Subcode>
<S:Value>[Subcode]</S:Value>
</S:Subcode>
</S:Code>
<S:Reason>
<S:Text xml:lang="en">[Reason]</S:Text>
</S:Reason>
<S:Detail>[Detail]</S:Detail>
</S:Fault>
</S:Body>
</S:Envelope>
Das folgende Codebeispiel zeigt einen SOAP-Beispielfehler.
<soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soapelope"
xmlns:xml="https://www.w3.org/XML/1998/namespace"
xmlns:wsa="https://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:nprt="https://schemas.microsoft.com/windows/2006/01/wdp/scan">
<soap:Header>
<wsa:Action>https://schemas.xmlsoap.org/ws/2004/08/addressing/fault</wsa:Action>
<!-- Headers excluded for brevity -->
</soap:Header>
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>env:Sender</soap:Value>
<soap:Subcode>
<soap:Value>wscn:OperationFailed</soap:Value>
</soap:Subcode>
</soap:Code>
<soap:Reason>
<soap:Text xml:lang="en">Service cannot perform the requested operation</soap:Text>
</soap:Reason>
</soap:Fault>
</soap:Body>
</soap:Envelope>