Поделиться через


Отчеты об ошибках службы проверки WSD

В этом разделе описывается, как служба проверки WSD создает и отправляет коды ошибок операции. Коды ошибок, которые могут возвращать большинство операций, описаны в разделе Распространенные коды ошибок службы проверки WSD.

Когда служба сканирования WSD обнаруживает ошибку при обработке операции xxxRequest , она возвращает код ошибки вместо элемента XxxResponse . Служба сканирования возвращает коды ошибок в элементе <soap:Fault> .

Все сообщения об ошибках, определенные в службе проверки WSD, должны отправляться в соответствии с правилами, описанными в спецификации адресации веб-служб (WS-Addressing). В частности, служба проверки WSD должна отправлять сообщения об ошибках в следующих расположениях:

  1. [конечная точка сбоя], если она присутствует и действительна.

  2. В противном случае — [конечная точка ответа], если она присутствует.

  3. В противном случае — [исходная конечная точка].

Конечные точки должны содержать обязательные заголовки сведений о сообщениях для всех сообщений об ошибках. Сообщения об ошибках коррелируются как ответы с помощью свойства [relationship], как определено в WS-Addressing. Следующее свойство [action] обозначает сообщения об ошибках:

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

Определения ошибок используют следующие свойства:

Свойство Fault Определение
[Код] Код ошибки.
[Подкод] Дополнительный код ошибки.
[Причина] Элемент reason на английском языке.
[Подробности] Элемент detail. Если этот элемент отсутствует, элемент 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>