Когда я должен использовать OperationContextScope внутри службы WCF?
В настоящее время я работаю над сервисом WCF, который обращается к другому сервису, чтобы предоставить информацию о некоторых из его операций. Прокси для второго сервиса генерируется через строго типизированный ProxyFactory<T>
учебный класс. У меня не возникло никаких проблем, но я слышал, что должен сделать что-то вроде следующего при звонке:
using (new OperationContextScope((IContextChannel)_service))
_service.Send(message);
Итак, мой вопрос: когда создается этот новый OperationContextScope
уместно, а почему?
Спасибо!
1 ответ
Если вы используете обратные вызовы или если вы хотите изменить сообщение или заголовки, то вам нужно использовать OperationContextScope
, Ваша служба может нуждаться в изменении исходящих заголовков при вызове этой другой службы.
Когда вы устанавливаете OperationContextScope
тогда ты можешь:
- Доступ и изменение заголовков входящих и исходящих сообщений и других свойств.
- Доступ к среде выполнения, включая диспетчеры, хост, канал и расширения.
- Доступ к другим типам контекстов, таким как контексты безопасности, экземпляра и запроса.
- Доступ к каналу, связанному с
OperationContext
объект или (если канал реализуетSystem.ServiceModel.Channels.ISession
) идентификатор сеанса связанного канала.
Другой сервис, который вы называете, это сервис на основе сеанса? Вероятно, вам нужно посмотреть его пример клиентского кода или документации, если таковые имеются.