Когда мне следует использовать OperationContextScope внутри службы WCF?

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

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

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

Спасибо!


person Brandon Linton    schedule 18.03.2010    source источник


Ответы (1)


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

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

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

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

person Ajay Kelkar    schedule 14.04.2010
comment
Попался. Поэтому в любое время, когда мне требуется более детальный контроль над информацией о сеансе, безопасностью и т. Д., Я должен создать отдельный OperationContextScope. Другой сервис основан на сессиях, да. - person Brandon Linton; 14.04.2010