1

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

我正在尝试在 AfterReceiveRequest 方法中将 wcf 客户端的用户 ID 存储在 MessageInspector 的客户端,如下所示:

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

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

这可能吗?

4

1 回答 1

2

不推荐使用 ThreadStatic,因为 WCF 会随机使用线程池中的线程,并且线程回收时不会重新初始化 ThreadStatic 变量。此外,如果您有一个包含多个 WCF 调用的会话,则同一服务实例可能会在调用之间切换线程。

您应该创建一个 OperationContext 扩展。

请参阅在哪里存储当前 WCF 调用的数据?ThreadStatic 安全吗?

于 2012-09-10T05:04:20.137 回答