C# 如何在不使用.net会话的情况下共享特定于用户的数据
在这里,我遇到了一种情况,我需要在页面之间共享特定于用户的数据(如firstname/lastname/email等),而不使用会话 我不能使用会话的原因是因为我们使用的是负载均衡器,它可能会分配不同的机器来满足用户的请求 因此,我的公司严格声明避免使用会话 由于某些限制,我们不能使用数据存储(sql)来存储会话 现在,这里的一个关键问题是,我们如何在不使用会话/cookie/数据存储的情况下共享特定于用户的数据 我只有一个选项可以在每次请求时ping数据库以获取特定于用户的信息(这显然不是推荐的方法) 有谁能帮我建议如何在页面上共享特定于用户的信息 注意:我使用的是MVC4(剃须刀引擎) 我只有一个选项,可以在每次请求获取时ping数据库 用户特定信息(这显然不是推荐的 (方法) 事实上,这是推荐的方法。如果您担心可能会对数据库产生大量流量,您可以随时缓存结果。请小心为缓存使用特定于用户的密钥,以避免在用户之间混合信息。此外,您可以考虑在您的节点上使用诸如“代码> MycCache < /Cord>”这样的分发缓存。 Cookie可以使用。C# 如何在不使用.net会话的情况下共享特定于用户的数据,c#,.net,cookies,asp.net-mvc-4,session-state,C#,.net,Cookies,Asp.net Mvc 4,Session State,在这里,我遇到了一种情况,我需要在页面之间共享特定于用户的数据(如firstname/lastname/email等),而不使用会话 我不能使用会话的原因是因为我们使用的是负载均衡器,它可能会分配不同的机器来满足用户的请求 因此,我的公司严格声明避免使用会话 由于某些限制,我们不能使用数据存储(sql)来存储会话 现在,这里的一个关键问题是,我们如何在不使用会话/cookie/数据存储的情况下共享特定于用户的数据 我只有一个选项可以在每次请求时ping数据库以获取特定于用户的信息(这显然不是推荐
- 在浏览器和服务器之间传输时,它将消耗额外的负载
- 它将存储在客户机中
- 您可以使用自定义代码加密/解密数据以确保安全
MemoryCache.Default[“profile_”+user.Identity.Name]=userSpecificInformation代码>。正如我在回答中所解释的,您需要为缓存使用特定于用户的密钥。仅此而已。+1表示使用类似memcached的存储来实现快速查找。@Darin,这看起来不错,但如果loadbalancer分配了不同的计算机来处理请求,该缓存对象是否也可用于其他服务器?如果是,那怎么办?我们不使用专用的服务器caching@anilpurswani,如果您使用内存缓存,那么它当然不可用。这就是为什么我在回答中建议您在这个场景中使用分布式缓存。一个例子是memcached
。