最近我阅读了以下post on SO
根据这个帖子的同事们,只需捕获引用就可以从另一个线程引用OperationContext.Current是安全的(有或没有OperationContextScope的帮助)。
我的问题是:这是真的吗?我可以看到OperationContext的许多可支配成员。根据一个非常简单的测试 - 从线程池排队的线程中捕获OpertionContext的引用 - 像IncomingMessageHeaders这样的值消失(被丢弃并且不再有效)。
从请求线程中获取所需内容并且不依赖于操作上下文及其属性的生命周期是不是更安全?
答案 0 :(得分:2)
基本上,来自Msdn article:
在服务操作中使用OperationContext来访问 当前的运营执行环境。特别是操作 context用于访问双工服务中的回调通道 在部分操作中存储额外的状态数据,以及 访问传入的邮件标题和属性以及添加传出 邮件标题和属性。
和this
OperationContext - 此类表示操作信息 运行时收集每个操作。这包括信息 例如传入的消息头,传入的消息属性, 传入的安全标识和其他信息。 扩展名 这个类可以扩展OperationContext或store的行为 每项操作的状态。
我认为您可以获得一些服务配置,允许您访问OperationContext值(使用服务的实例管理,服务模式......)。但是 - 在这种情况下,如果您的'服务实例模式将来会被更改 - 您可以打破所有功能,使用此假设构建。
我同意你的观点,并且更喜欢自己照顾国家价值观(如果需要的话)。