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


ошибки

В этом разделе описывается ошибка, которая может возникнуть при возникновении проблем с функциями веб-служб Windows в результате сбоя выполнения команды.

Параметры out

Как правило, значение параметров out не изменяется, если функция завершается ошибкой.

Существует несколько экземпляров, в которых параметры вне изменяются, если функция завершается ошибкой. Эти случаи явно вызваны в документации по каждому параметру. Если документация не упоминание ничего о изменении параметров в случае сбоя, можно предположить, что функция не изменит их.

Коды ошибок

Все коды возврата ошибок — HRESULTs. Этот API определяет набор HRESULTs в диапазоне FACILITY_WEBSERVICES, но также возвращает ошибки, определенные в другом месте API Windows.

Ознакомьтесь с документацией по конкретным API, чтобы узнать, какие коды ошибок возвращаются. Список не предназначен для получения исчерпывающего значения для каждого API, а список кодов ошибок, для которых существуют распространенные сценарии для явной обработки. Вызывающий объект всегда должен принимать другие коды ошибок из любого API.

Этот API определяет относительно небольшое количество кодов ошибок, которые соответствуют сценариям, в которых программа будет принимать меры на основе ошибки. Коды ошибок могут быть недостаточно, чтобы определить, что пошло не так, или для предоставления хорошего описания проблемы пользователю. Лучшее понимание проблемы происходит от использования расширенных ошибок, как описано ниже.

Расширенные ошибки

В дополнение к возврату кода ошибки вызывающий объект может при необходимости запрашивать подробные сведения об ошибке для любого вызова API путем передачи объекта, отличного от NULLWS_ERROR . Чтобы создать объект ошибки, используйте WsCreateError. Если возникает ошибка, API, вызвавшей ошибку, заполняет объект ошибки дополнительным контекстом о ситуации ошибки. Если ошибка отсутствует, объект ошибки не изменен. Передача объекта ошибки NULL указывает, что вызывающий объект не заинтересован в подробных сведениях об ошибках. Вызывающие объекты (включая обратные вызовы) должны быть готовы к обработке объектов ошибок NULL .

Обратите внимание, что один и тот же объект ошибки можно использовать для нескольких вызовов API, но может использоваться только для одного вызова API за раз (так как он является одним потоком). Каждый раз при возникновении ошибки сведения об ошибке добавляются в объект ошибки. При отмене цепочки вызовов несколько функций могут добавлять сведения в объект ошибки, чтобы предоставить дополнительный контекст об ошибке. Чтобы очистить содержимое объекта ошибки перед повторной его использованием (после возникновения ошибки), используйте WsResetError. Если ошибка не возникает, перед повторной его использованием не нужно сбрасывать объект ошибки.

Подробные сведения об ошибке состоят из следующих элементов:

  • Набор значений свойств, которые предоставляют дополнительные сведения об ошибке при наличии. См. WS_ERROR_PROPERTY.
  • Ноль или больше строк ошибок. Строки добавляются с помощью WsAddErrorString и могут запрашиваться с помощью WsGetErrorString. Количество строк можно запрашивать с помощью WS_ERROR_PROPERTY_STRING_COUNT.

Ошибки и ошибки

Сведения об ошибках и ошибках см. в разделе "Ошибки".

Сведения об ошибках конфиденциальности языка

При создании объекта ошибки указывается LANGID требуемого перевода языка для сведений об ошибке. Это используется при добавлении сведений об ошибке в объект ошибки.

Это значение языка можно получить или задать с помощью WS_ERROR_PROPERTY_LANGID.

Канонические коды ошибок

Этот API предоставляет канонический набор кодов ошибок (WS_E_*), позволяющий использовать различные технологии коммуникации без необходимости зависеть от конкретных кодов ошибок конкретной базовой реализации. Полный список этих кодов ошибок см. в разделе "Возвращаемые значения веб-служб Windows".

Это позволяет, например, программе проверка для кода ошибки WS_E_ENDPOINT_NOT_FOUND, независимо от того, используется ли TCP, UDP или HTTP, и предпринять некоторые действия (например, попытка использовать другую конечную точку).

Если код конкретной реализации сопоставляется с канонической ошибкой, исходный код ошибки сохраняется в объекте ошибки и может по-прежнему быть доступен для диагностических целей. Дополнительные сведения см . в WS_ERROR_PROPERTY_ORIGINAL_ERROR_CODE .

Недопустимое использование API

Следующие коды ошибок зарезервированы для недопустимого использования API и не будут возвращены в других случаях. Если возвращаются какие-либо из этих ошибок, это может быть признак ошибки приложения.

  • WS_E_INVALID_OPERATION
  • E_INVALIDARG

Следующие перечисления являются частью трассировки:

Следующие коды ошибок являются частью трассировки:

  • CERT_E_CN_NO_MATCH
  • CERT_E_EXPIRED
  • CERT_E_UNTRUSTEDROOT
  • CERT_E_WRONG_USAGE
  • CRYPT_E_REVOCATION_OFFLINE
  • E_INVALIDARG
  • E_OUTOFMEMORY
  • WS_E_ADDRESS_IN_USE
  • WS_E_ADDRESS_NOT_AVAILABLE
  • WS_E_ENDPOINT_ACCESS_DENIED
  • WS_E_ENDPOINT_ACTION_NOT_SUPPORTED
  • WS_E_ENDPOINT_DISCONNECTED
  • WS_E_ENDPOINT_FAILURE
  • WS_E_ENDPOINT_FAULT_RECEIVED
  • WS_E_ENDPOINT_NOT_AVAILABLE
  • WS_E_ENDPOINT_NOT_FOUND
  • WS_E_ENDPOINT_TOO_BUSY
  • WS_E_ENDPOINT_UNREACHABLE
  • WS_E_INVALID_ENDPOINT_URL
  • WS_E_INVALID_FORMAT
  • WS_E_INVALID_OPERATION
  • WS_E_NOT_SUPPORTED
  • WS_E_NO_TRANSLATION_AVAILABLE
  • WS_E_NUMERIC_OVERFLOW
  • WS_E_OBJECT_FAULTED
  • WS_E_OPERATION_ABANDONED
  • WS_E_OPERATION_ABORTED
  • WS_E_OPERATION_TIMED_OUT
  • WS_E_OTHER
  • WS_E_PROXY_ACCESS_DENIED
  • WS_E_PROXY_FAILURE
  • WS_E_PROXY_REQUIRES_BASIC_AUTH
  • WS_E_PROXY_REQUIRES_DIGEST_AUTH
  • WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
  • WS_E_PROXY_REQUIRES_NTLM_AUTH
  • WS_E_QUOTA_EXCEEDED
  • WS_E_SECURITY_SYSTEM_FAILURE
  • WS_E_SECURITY_TOKEN_EXPIRED
  • WS_E_SECURITY_VERIFICATION_FAILURE
  • WS_E_SERVER_REQUIRES_BASIC_AUTH
  • WS_E_SERVER_REQUIRES_DIGEST_AUTH
  • WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
  • WS_E_SERVER_REQUIRES_NTLM_AUTH
  • WS_S_ASYNC
  • WS_S_END

Следующие функции являются частью трассировки:

Следующий дескриптор является частью трассировки:

Следующая структура является частью трассировки:

Безопасность

Существует ряд соображений безопасности, о которых должен учитывать пользователь объекта ошибки:

  • Объект ошибки может содержать ненадежные данные. Ниже приведены примеры: WS_FAULT и строки ошибок, оба из которых могут храниться в объекте ошибки на основе информации, полученной через ненадежный канал. Пользователь объекта ошибки должен быть осторожным при проверке сведений в объекте ошибки и принятии решений на основе его значений.
  • Пользователь объекта ошибки должен вызвать WsResetError после проверки сведений об ошибке. Сбой этого может привести к накоплению памяти.
  • Пользователь объекта ошибки должен быть очень осторожным при использовании значения WS_FULL_FAULT_DISCLOSURE перечисления WS_FAULT_DISCLOSURE , так как сгенерированный сбой может содержать частные сведения, накопленные в процессе записи ошибок.