Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在不使用.net会话的情况下共享特定于用户的数据_C#_.net_Cookies_Asp.net Mvc 4_Session State - Fatal编程技术网

C# 如何在不使用.net会话的情况下共享特定于用户的数据

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数据库以获取特定于用户的信息(这显然不是推荐

在这里,我遇到了一种情况,我需要在页面之间共享特定于用户的数据(如firstname/lastname/email等),而不使用会话

我不能使用会话的原因是因为我们使用的是负载均衡器,它可能会分配不同的机器来满足用户的请求

因此,我的公司严格声明避免使用会话

由于某些限制,我们不能使用数据存储(sql)来存储会话

现在,这里的一个关键问题是,我们如何在不使用会话/cookie/数据存储的情况下共享特定于用户的数据

我只有一个选项可以在每次请求时ping数据库以获取特定于用户的信息(这显然不是推荐的方法)

有谁能帮我建议如何在页面上共享特定于用户的信息

注意:我使用的是MVC4(剃须刀引擎)

我只有一个选项,可以在每次请求获取时ping数据库 用户特定信息(这显然不是推荐的 (方法)

事实上,这是推荐的方法。如果您担心可能会对数据库产生大量流量,您可以随时缓存结果。请小心为缓存使用特定于用户的密钥,以避免在用户之间混合信息。此外,您可以考虑在您的节点上使用诸如“代码> MycCache < /Cord>”这样的分发缓存。

Cookie可以使用。
  • 在浏览器和服务器之间传输时,它将消耗额外的负载
  • 它将存储在客户机中
  • 您可以使用自定义代码加密/解密数据以确保安全

缓存不能用于共享特定于用户的信息。你能举一个例子来说明我如何利用缓存来共享用户特定的数据吗?当然,它可以被使用,就像:
MemoryCache.Default[“profile_”+user.Identity.Name]=userSpecificInformation。正如我在回答中所解释的,您需要为缓存使用特定于用户的密钥。仅此而已。+1表示使用类似memcached的存储来实现快速查找。@Darin,这看起来不错,但如果loadbalancer分配了不同的计算机来处理请求,该缓存对象是否也可用于其他服务器?如果是,那怎么办?我们不使用专用的服务器caching@anilpurswani,如果您使用内存缓存,那么它当然不可用。这就是为什么我在回答中建议您在这个场景中使用分布式缓存。一个例子是
memcached