是否有可用于缓存值的WCF请求特定范围?

时间:2011-05-10 00:23:54

标签: c# wcf

我不是在讨论会话 - 这些数据不会在请求之间保留。我有一个深度嵌套的基础构造函数,我宁愿访问这个作用域的数据,而不是通过这些长链...

TIA。

2 个答案:

答案 0 :(得分:3)

您可以将缓存的对象公开为服务类的属性。然后,从调用链中的任何位置,您都可以使用OperationContext.Current访问此服务类。InstanceContextGetServiceInstance()

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

假设您正在使用SingleCall实例化,而不是基于会话或单例实例化。

答案 1 :(得分:3)

我使用Extensions的{​​{1}}属性(请参阅http://msdn.microsoft.com/en-us/library/ms733816.aspx) - 可通过其静态OperationContext属性轻松访问(仅限于操作范围内) ,当然)。