【问题标题】:Thread.CurrentThread store custom data such as useridThread.CurrentThread 存储用户标识等自定义数据
【发布时间】:2012-09-07 16:40:45
【问题描述】:

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

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

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

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

这可能吗?

【问题讨论】:

标签: c# .net wcf


【解决方案1】:

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

您应该创建一个 OperationContext 扩展。

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

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2014-01-06
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多