如何在WCF服务中维护会话
本文关键字:维护 维护会 会话 服务 WCF | 更新日期: 2023-09-27 17:52:50
我有一个WCF服务,我想在其中为我的身份验证方法维护会话。
我已经阅读了各种文章,并应用了以下一些在WCF服务中维护会话所需的更改,因为WCF默认不支持会话。
1- [ServiceBehavior(InstanceContextMode = InstanceContextMode. persession)] in svc file.
2- [ServiceContract(SessionMode = SessionMode. allowed)] in ServiceContract
3-使用wsHttpBinding作为basicHttpBinding不支持的会话
我使用WCFTestClient来调用我的服务。我已经检查了我的TestClient的配置,它正在使用basicHttpBinding,这是问题的原因。
我无法在我的服务webconfig中实现3点,也无法更改我的TestClient的配置。有人能给我指路吗?由于
为了解决这个问题,我在服务中实现了自己的SessionHandler。
- 一个线程安全的单例类,包含一个Dictionary<Guid,>
- 服务方法:Guid RegisterClient(ClientName ClientName){/*添加客户端到会话*/}
- 服务方法:bool UnregisterClient(Guid clientGuid){/*从会话中删除客户端*/}
- 服务方法:void DoThisOnServer(Guid clientGuid){/*服务功能*/}
- void CheckTimeout(){/*遍历字典并删除超时会话*/}
提示:
- SessionData包含ClientName, TimeOfConnection, YourUsefulData
- ClientName是ip地址或其他初始标识符的占位符
客户端必须注册,并且只有在SessionHandler中存在所提供的Guid时才会执行以下所有操作。