Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Обработка ошибок. Во время вызова сервера по протоколу SOAP могут возникать самые разнообразные ошибки






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

  • Ошибки инфраструктуры SOAP Toolkit. Они, в свою очередь, подразделяются на клиентские и серверные ошибки. Типичным примером клиентской ошибки может служить несоответствие передаваемого параметра WSDL-описанию. Типичный пример серверной ошибки – SOAPServer не смог обратиться к компоненту, обслуживающему вызов.
  • Ошибки выполнения запроса серверным компонентом (вызываемый метод компонента возвращает HRESULT с установленным битом ошибки).
ПРИМЕЧАНИЕ Естественно, возникает вопрос, а что же происходит с кодами возврата серверного компонента, у которых не установлен бит ошибки (например, код S_FALSE)? Ситуация с такими кодами такая же, как и в VB-приложениях. SOAPServer игнорирует эти коды возврата, поэтому лучше избегать их использования или разработать свой механизм передачи таких кодов клиенту, например, через параметр метода.

В случае возникновения перечисленных выше ошибок (кроме клиентских ошибок, когда, например, осуществлялась попытка передать неправильное значение параметра) сервер передает клиенту ответ SOAPFault.

Клиент SOAPClient, получив от сервера SOAPFault, предпринимает следующие действия:

  • Изменяет значения свойств объекта SOAPClient на соответствующие значения элементов SOAPFault – < faultcode>, < faultstring>, < faultactor> и < detail>
  • Возвращает HRESULT, указывающий на ошибку и создает описание ошибки, доступное через IErrorInfo.

Если ошибка произошла на клиенте, то клиент также устанавливает значения свойств объекта SOAPClient, и формирует информацию об ошибке, доступную через IErrorInfo.

ПРИМЕЧАНИЕ В описание ошибки, доступное через IErrorInfo, попадает не вся информация о результате вызова метода, а только значение < faultcode> + < faultstring>. Кодом ошибки будет либо код, который вернул метод компонента на сервере, либо стандартный код. Для получения подробной информации об ошибке необходимо проанализировать значения свойств объекта SOAPClient.

Элементам ответа сервера SOAPFault соответствуют одноименные свойства объекта SOAPClient:

  • < faultcode> и SOAPClient.FaultCode – как правило, либо “Client” – ошибка произошла на клиенте, либо “Server” – ошибка произошла на сервере. Возможны и другие значения, например, VersionMismatch – несоответствие версий.
  • < faultstring> и SOAPClient.FaultString – либо описание ошибки от серверного компонента, либо название метода, который вернул ошибку.
  • < faultfactor> и SOAPClient.FaultFactor – адрес сервиса, по которому осуществлялся запрос, например, https://ivan: 8080/Sample1/Sample1.ASP
  • < detail> и SOAPClient.Detail – в соответствии со спецификацией SOAP в этом элементе содержится дополнительная информация, которая может иметь произвольный формат и определяется приложением (в данном случае SOAP Toolkit).





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.