让我有一些WCF服务。我需要的是存储与经过身份验证的用户相关的其他数据,以便立即获取此信息(无需从数据存储中查询)。 我想知道实现它的最佳实践。我假设可以使用以下替代方案:
1)使服务AspnetCompatible并使用Forms身份验证,HttpContext和Cache。关于这个替代方案,我想知道使用它的缺点。
2)按会话进行服务(InstanceContextMode.PerSession)。至于我,这个选项的主要缺点是它可能会导致可伸缩性问题。据我所知,basicHttpBinding不支持每个会话模式(也就是说,它不适用于Silverlight应用程序)。
那么,您如何看待它以及您建议使用什么?
答案 0 :(得分:1)
您始终可以获得如下用户名:
OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name
你甚至可以获得密码,虽然它有点复杂。 Rory Primrose explains it in his article。
您需要哪些其他信息,以及什么阻止您在通话之间将其存储在内存中?
编辑:
Scalibity是一个有效的关注点,理想情况下我坚持PerCall实例化。在调用之间共享信息的简单方法与在非WCF上下文中的实例之间共享信息没有任何不同 - 即静态。