不建议使用ThreadStatic,因为WCF将随机使用线程池中的线程,并且线程回收时不会重新初始化ThreadStatic变量。此外,如果您有一个具有多个WCF调用的会话,那么同一服务实例可能会在调用之间切换线程。
在.net 4中,是否可以在Thread.CurrentThread对象中存储自定义值,如userid?
我正在尝试在AfterReceiveRequest方法中的MessageInspector客户端存储wcf客户端的userid,如下所示:
request.Headers.Add(MessageHeader.CreateHeader("userid", string.Empty, userid));
在服务器端,我想在方法AfterReceiveRequest的Thread.CurrentThread中检索它。
这可能吗?
您应该创建一个OperationContext扩展
请参阅当前WCF调用的数据存储位置?ThreadStatic安全吗?