WCF 调用中的用户相关信息

本文关键字:信息 用户 调用 WCF | 更新日期: 2023-09-27 18:36:17

我们有一个客户端-服务器架构,WCF在服务器端。所有WCF都是每次调用的;基本上每个WCF方法都是一个事务脚本。调用 WCF -方法时,客户端会传递一些身份验证信息(为简单起见,用户 ID)。此 ID(以及其他一些与用户相关的信息)在逻辑层中的任何地方都需要检查从数据库拉取某些对象的权限,以适当的语言回答等。

目前,当请求到达时,我们将所有这些信息打包到一个"RequestBag"对象中,并将其传递给逻辑中的类。然而,这导致它几乎无处不在。

有没有更好的方法?基本上我想做的是调用一些静态方法并说GetCurrentUserState(),这将为我提供与当前WCF调用上下文相关的数据。但是如何做到这一点呢?线程 ID 不是一个选项,因为某些线程可以启动以执行某些任务。MSDN 说

"没有与 WCF 会话关联的常规数据存储"

.这是否意味着将我的对象传递到任何地方实际上是一种方法?

WCF 调用中的用户相关信息

也许这个问题不是以最好的方式提出的,因为我没有收到太多反馈。无论如何,如果 smb else 偶然发现这一点,这就是实际上可以回答我的问题的线程 在哪里存储当前 WCF 调用的数据?ThreadStatic 安全吗?

所以我最终将MyContext:IExtension<OperationContext>子类化并将我的用户状态放在那里。然后我可以在整个应用程序中MyContext.Current.MyUserState访问它。