Freigeben über


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:

  1. Der [Fehlerendpunkt], wenn er vorhanden und gültig ist.

  2. Andernfalls der [Antwortendpunkt], wenn er vorhanden ist.

  3. 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>