CallContext в WCF - PullRequest
       1

CallContext в WCF

7 голосов
/ 25 июня 2010

Безопасно использовать CallContext, когда запрос поступает в службу WCF, инициализировать его некоторыми специфическими для вызова данными (например, используя ловушку в начале вызова: Inspector / ContextBoundObject), а затем повторно использовать его в вызове и гарантировать что данные, к которым я обращаюсь, всегда одни и те же?

Спасибо, Павел

1 Ответ

7 голосов
/ 25 июня 2010

Если вы не используете его от инспекторов, тогда это должно быть безопасно, но если вы не используете Remoting или не пересекаете границу AppDomain, тогда, вероятно, проще просто использовать статическое поле потока. Поместите ThreadStaticAttribute в статическое поле, и оно будет отдельным местом хранения в каждом потоке.

Если вы, например, пытаетесь установить значения в IDispatchMessageInspector, это не сработает, поскольку они будут выполняться в отдельном потоке от запроса. Взгляните на OperationContext , который предоставит специфичную для вызова информацию о запросе WCF. Вы можете добавить к нему расширения, которые могут хранить пользовательские данные, внедрив IExtension<OperationContext> и добавив их в свойство Extensions. Вот запись в блоге , которая описывает, как добавить пользовательские данные в OperationContext.

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