Есть ли область видимости WCF-запроса, которую я могу использовать для кэширования значения? - PullRequest
2 голосов
/ 10 мая 2011

Я не говорю о сеансе - эти данные не будут сохраняться между запросами. У меня есть глубоко вложенный базовый конструктор, и я предпочел бы получить доступ к этой области для части данных, а не передавать ее через эти длинные цепочки ...

ТИА.

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

Я бы использовал свойство Extensions (см. http://msdn.microsoft.com/en-us/library/ms733816.aspx) из OperationContext - которое легко доступно через его статическое свойство OperationContext.Current (конечно, только в рамках операции).

3 голосов
/ 10 мая 2011

Вы можете выставить кэшированный объект как свойство вашего класса обслуживания. Затем из любой точки цепочки вызовов вы сможете получить доступ к этому классу обслуживания с помощью OperationContext.Current. InstanceContext . GetServiceInstance ()

MyServiceImplementation service = (MyServiceImplementation)OperationContext.Current.InstanceContext.GetServiceInstance();
var cachedValue = service.MyCachedValue;

Предполагается, что вы используете экземпляры SingleCall, а не сеансовые или одноэлементные.

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