Thread.CurrentThread存储自定义数据,如userid

时间:2012-09-07 16:40:45

标签: c# .net wcf

在.net 4中,是否可以在Thread.CurrentThread对象中存储自定义值,例如userid?

我试图在AfterReceiveRequest方法的MessageInspector客户端存储wcf客户端的userid,如下所示:

request.Headers.Add(MessageHeader.CreateHeader("userid", string.Empty, userid));

在服务器端,我想在方法AfterReceiveRequest中的Thread.CurrentThread中检索它。

这可能吗?

1 个答案:

答案 0 :(得分:2)

建议不要使用ThreadStatic,因为WCF会随机使用线程池中的线程,并且线程被回收时不会重新初始化ThreadStatic变量。此外,如果您有多个WCF调用的会话,则相同的服务实例可能会将线程从调用切换到调用。

您应该创建一个OperationContext扩展名。

请参阅Where to store data for current WCF call? Is ThreadStatic safe?