Когда я должен использовать OperationContextScope внутри службы WCF? - PullRequest
12 голосов
/ 18 марта 2010

В настоящее время я работаю над службой WCF, которая обращается к другой службе, чтобы предоставить информацию о некоторых из ее операций. Прокси для второго сервиса генерируется через строго типизированный класс ProxyFactory<T>. У меня не возникло никаких проблем, но я слышал, что при звонке я должен сделать что-то вроде следующего:

using (new OperationContextScope((IContextChannel)_service))
     _service.Send(message);

Итак, мой вопрос: когда создание нового OperationContextScope уместно и почему?

Спасибо!

1 Ответ

15 голосов
/ 14 апреля 2010

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

Когда вы установите OperationContextScope, тогда вы можете:

  1. Доступ и изменение заголовков входящих и исходящих сообщений и других свойств.
  2. Доступ к среде выполнения, включая диспетчеры, хост, канал и расширения.
  3. Доступ к другим типам контекстов, таким как контексты безопасности, экземпляров и запросов.
  4. Доступ к каналу, связанному с объектом OperationContext или (если канал реализует System.ServiceModel.Channels.ISession) идентификатор сеанса связанного канала.

Другой сервис, который вы вызываете, это сервис на основе сеанса? Возможно, вам нужно взглянуть на его пример клиентского кода или документацию, если таковые имеются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...