MessageName

Свойство MessageName позволяет назначать web-методу имя, отличное от того, которое ему было назначено при написании класса web-сервиса.

Существует возможность создавать в web-сервисе web-методы с одинаковыми именами. Но при попытке просмотра страницы такого web-сервиса будет сгенерирована ошибка. Свойство MessageName используется именно в этих случаях.

Допустим кроме веб метода GetCustOrders с одним параметром (код клиента) у нас объявлен еще один метод GetCustOrders, принимающий кроме кода клиента также вилку дат и возвращающий DataSet с информацией о заказах, дата которых находится между указанными датами

[WebMethod(Description=" Возвращает список заказов для указанного клиента ")]public DataSet GetCustOrders(string CustomerID){...}[WebMethod(MessageName="GetCustOrdersByDate")]public DataSet GetCustOrders(string CustomerID, DateTime startDate, DateTime endDate){...}

Теперь, хотя оба web-метода и имеют одинаковое имя, все равно есть возможность использовать страницу web-сервиса. При этом в прокси классе оба метода естесственно будут определены с именем GetCustOrders.

TransactionOption

Web-сервисы ограниченно поддерживают транзакции. С помощью свойства TransactionOption можно управлять тем, как ваш метод использует транзакции. Это свойство может принимать следующие значения:

Disabled Веб метод выполняется вне транзакции
NotSupported То же самое
Supported Если транзакция существует – метод выполняется в контексте этой транзакции, если же нет – выполнение идет вне транзакции
Required Метод требует наличия транзакции для выполнения. При этом всегда создается новая транзакция (аналогично RequiresNew).
RequiresNew Метод требует создания новой транзакции. Каждый раз при вызове метода создается новая транзакция.

Слово «ограниченно» означает, что веб сервис может порождать транзакцию, но при этом не может быть участником другой транзакции. Если вызывается веб метод с TransactionOption установленным в Required или RequiresNew, а в нем вызывается другой веб метод с такими же установками, каждый из этих методов инициирует свою транзакцию.

По умолчанию свойство TransactionOption установлено в Required.

При нормальном завершении работы метода транзакция считается выполненной. Чтобы прервать выполнение транзакции, сгенерируйте исключение. В веб методе не нужно вызывать методы SetComplete и SetAbort.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: