WSD 扫描服务操作错误报告

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

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

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

  1. [Fault 终结点],如果它存在并且有效。

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

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

终结点必须在所有错误消息中包含所需的消息信息标头。 使用 WS-ADDRESSING 中定义的 [relationship] 属性将错误消息与响应相关联。 以下 [action] 属性指定错误消息:

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

错误的定义使用以下属性:

错误属性 定义
编写 错误代码。
子代码 错误子代码。
在于 英语 "原因" 元素。
仔细 Detail 元素。 如果此元素不存在,则没有为错误定义详细信息元素。

这些属性绑定到 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>