WSD スキャン サービス操作エラー報告

このセクションでは、WSD スキャン サービスが操作エラー コードを生成して送信する方法について説明します。 ほとんどの操作で返されるエラー コードについては、 「一般的な WSD スキャン サービス操作のエラー コード」に関するページを参照してください。

WSD スキャン サービスは、Xxx要求操作の処理中にエラーを検出すると、Xxx応答要素ではなくエラー コードを返します。 スキャン サービスは、<soap:Fault>要素のエラー コードを返します。

WSD スキャン サービス内で定義されているすべてのエラー メッセージは、Web サービス アドレッシング (WS-Addressing) 仕様で説明されている規則に従って送信する必要があります。 具体的には、WSD スキャン サービスは、エラー メッセージを次の場所に送信する必要があります。

  1. [fault endpoint](エラー エンドポイントが存在し、有効な場合)。

  2. それ以外の場合は、[応答エンドポイント](存在する場合)。

  3. それ以外の場合は、[ソース エンドポイント]。

エンドポイントには、すべてのエラー メッセージに必要なメッセージ情報ヘッダーを含める必要があります。 エラー メッセージは、WS-Addressing で定義されている [リレーションシップ] プロパティを使用して応答として関連付けられます。 次の [action] プロパティは、エラー メッセージを指定します。

https://schemas.xmlsoap.org/ws/2004/08/addressing/fault

エラーの定義では、次のプロパティを使用します。

Fault プロパティ Definition
[コード] エラー コード。
[サブコード] エラーサブコード。
[理由] 英語の理由要素。
[詳細] 詳細要素。 この要素が存在しない場合、エラーの詳細要素は定義されません。

次のコード例に示すように、これらのプロパティは SOAP 1.2 エラーにバインドされます。

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

次のコード例は、サンプルのSOAP Fault を示しています。

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