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

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

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

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

Спасибо!

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам