WSD 扫描服务操作错误报告

本部分介绍 WSD 扫描服务如何生成和发送操作错误代码。 常见 WSD 扫描服务操作错误代码中介绍了大多数操作可以返回的错误代码。

当 WSD 扫描服务在处理 Xxx请求 操作时遇到错误时,它将返回错误代码而不是 XxxResponse 元素。 扫描服务在 soap:Fault> 元素中<返回错误代码。

必须在 WSD 扫描服务中定义的所有错误消息都必须根据 Web 服务寻址 (WS-Addressing) 规范中所述的规则发送。 具体而言,WSD 扫描服务应将错误消息发送到以下位置:

  1. [故障终结点](如果存在且有效)。

  2. 否则为 [回复终结点](如果存在)。

  3. 否则为 [源终结点]。

终结点必须在所有错误消息上包括所需的消息信息标头。 使用 WS-Addressing 中定义的 [relationship] 属性将错误消息关联为答复。 以下 [action] 属性指定错误消息:

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

故障的定义使用以下属性:

Fault 属性 定义
[代码] 错误代码。
[Subcode] 错误子代码。
[原因] 英语原因元素。
[详细信息] 详细信息元素。 如果此元素不存在,则不会为错误定义任何详细信息元素。

如以下代码示例所示,这些属性绑定到 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 错误

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