我们在服务器端有一个WCF
的客户端 - 服务器架构。所有WCF
都是每次通话;基本上每个WCF
方法都是一个事务脚本。调用WCF
- 方法时,客户端会传递一些身份验证信息(简单来说,就是用户ID)。逻辑层中的所有地方都需要此ID(以及其他一些与用户相关的信息),以检查从DB中提取某些对象的权限,以适当的语言回答等等。
目前,当请求到达时,我们将所有这些信息打包到一个“RequestBag”对象中央,并将其传递给逻辑中的类。然而,这导致它几乎无处不在。
有更好的方法吗?基本上我想要做的是调用一些静态方法并说出GetCurrentUserState()
,它会给我与当前WCF
调用的上下文相关的数据。但是怎么做呢?线程ID不是一个选项,因为某些线程可以启动来执行某些任务。 MSDN说
“没有与WCF会话关联的常规数据存储”
。这是否意味着在任何地方传递我的对象实际上是一种方法吗?
答案 0 :(得分:0)
也许这个问题不是以最好的方式提出的,因为我没有得到很多反馈。无论如何,如果smb其他发现了这个问题,那么这就是我的问题Where to store data for current WCF call? Is ThreadStatic safe?
实际上已回答的主题。所以我最终继承了MyContext:IExtension<OperationContext>
并将我的用户状态放在那里。我可以在整个应用程序中以MyContext.Current.MyUserState
的形式访问它。