Создание исключения Web-сервиса

Оценить
(0 голоса)

К счастью, в спецификации SOAP описано, как при помощи этого протокола исключитель­ное состояние можно передать через Интернет. Эти исключения могут быть исключитель­ными состояниями бизнес-логики или сгенерированными в .NET при обработке вызова. Здесь важно то, что если вы надлежащим образом обернете эти исключения, то клиент дол­жен суметь понять, как ими управлять.

.NET предоставляет объект SoapException для обертывания исключения с целью передачи его через SOAP. Этот класс имеет несколько параметров, которыми вы, возможно, не при­выкли пользоваться при работе с исключениями.

□    Message — используется для указания описательного сообщения для исключения. Если вы передаете через SOAP стандартное исключение .NET, то можете установить свойст­во Message в значение свойства Message стандартного исключения.

□    Code — используется для указания, была ли ошибка связана с сервером или с клиентом. Если клиент передал сообщение верно, но сервер не смог обработать запрос (не работал или был сломан), то вы устанавливаете это свойство в значение Serve г Fault Code. Ес­ли клиент передал неверное сообщение или плохие значения параметров, то вы уста­навливаете его в значение ClientFaultCode.

□    Actor — используется для установки значения в URI Web-сервиса. Это код, который вызвал исключение.

□    Detail (не обязателен)— используется для передачи дополнительной информации об ошибке. Свойство Detail может не содержать ничего, а может содержать столько под­робностей об исключении, сколько вы захотите предоставить.

В листинге 19.8 показана новая версия Web-метода GetCustomerProfile. Эта версия про­веряет существование клиента. Если клиент не существует, то выдается SoapException со свойством Code, установленным в значение ClientFaultCode.

[WebMethod(Description = "Used to return a customer's profile.")] public Customer GetCustomerProfile(string customerld) {

EntityServices.CustomerProfile custProfile =

new EntityServices.CustomerProfile();

Customer customer = custProfile.GetCustomer(customerld); if (customer == null) {

SoapException soapEx = new SoapException("Could not find Customer",

SoapException.ClientFaultCode,

Context.Request.Url.AbsoluteUri.ToString());

throw soapEx; return customer;

Приложения сервисов WCF
Шаблон проекта WCF Project
Создание сервиса WCF
Выполнение и тестирование вашего сервиса WCF
Настройка сервиса WCF

Добавить комментарий


Защитный код
Обновить

© 2017 www.visualstudios.ru. Все права защищены.