C# 存储临时数据最有效的方法是什么

C# 存储临时数据最有效的方法是什么,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我的问题是 我想在用户登录后存储一些数据。需要保留它,直到用户注销。许多解决方案开始讨论,如xml文件、会话、cookies等等 有没有更好的方法来实现这一点?如果您想在用户注销系统后删除数据,一个好方法是使用Session变量。i、 e如果您想存储从用户登录到注销的数据 您还可以检查:HTTP会话是一种方式 在本地文件系统上存储数据不可扩展。随着您添加更多的Web服务器,要确保您的客户机一次又一次地访问同一个服务器将变得更加困难。ASP和IIS通过会话解决了这个问题 会话通常在Cookie上

我的问题是

我想在用户登录后存储一些数据。需要保留它,直到用户注销。许多解决方案开始讨论,如xml文件、会话、cookies等等


有没有更好的方法来实现这一点?

如果您想在用户注销系统后删除数据,一个好方法是使用Session变量。i、 e如果您想存储从用户登录到注销的数据


您还可以检查:

HTTP会话是一种方式


在本地文件系统上存储数据不可扩展。随着您添加更多的Web服务器,要确保您的客户机一次又一次地访问同一个服务器将变得更加困难。ASP和IIS通过会话解决了这个问题


会话通常在Cookie上实现,出于安全原因,您可能应该坚持使用会话而不是手动滚动您自己的Cookie。

实际上这是Sessionvariables的主要思想,Cookie同样好,这取决于您希望保留哪些信息,更多安全会话更好。

根据我的经验和此链接,我最后的建议是:

COOKIES用于:

  • 加密[用户标识]
  • 加密[产品ID]
  • 加密[xyzIds..]
  • 加密[等]
数据库用于:

  • 按COOKIE ID列出的数据集
  • 按COOKIE ID列出的数据表
  • 按COOKIE ID列出的所有其他大数据块
我的建议还取决于以下统计数据和此链接的详细信息:


您可以使用会话。您提到的所有方法都有什么问题?@freebird在一个项目中堆叠多个会话值有多好?@taylorgib cookies…如果用户不支持cookies,则失败。文件失败是用户数量的增加。您可以使用正常的ASP.Net会话状态并提供获取会话id的自定义方式。也就是说,您可以根据用户的身份创建自定义会话id,而不是使用Cookie中的默认会话id(假设有魔力,因为没有Cookie/没有Url修改意味着没有对从浏览器获取重新请求的授权)每个请求都会带来。。。检查它。+1对所有“使用会话”,并且在问题中明确指定OP认为它较差:)。在本地系统上存储数据可以是可伸缩的,而且实现起来也很有趣-例如,粘性连接+延迟复制+某种投票算法来决定什么是最新的副本…在本地文件系统上存储数据可以是可伸缩的,但它不会第一次起作用,而且麻烦远远超过它的价值。如果没有必要,为什么要重新发明轮子?当像谷歌、脸谱网和推特这样的公司每秒处理10万个请求时,跳出框框思考是有意义的。总的来说,标准的做事方式是有效的,如果你不需要,就没有理由偏离。是的,如果这个问题是为了实际应用,就完全同意(我猜人们需要更早地考虑从默认ASP.Net SQL状态调整或更改状态存储,即每秒一百万个请求…1-10K可能更现实…仍然需要超过一百万个用户才能达到这样的数字).如果从更具娱乐性的角度提出这个问题-实现会话状态不是太难,也不是那么有趣…而其他方法也可以。还有其他方法吗?@Anjana-这是一种安全的方法,会话是用来存储用户会话数据的…所以最好使用会话…没有其他不同的方法还有,但我认为这是一个好方法。还有其他方法吗?你可以使用文本文件或任何其他类型的文件,你也可以保存在内存中,但这些选项并不像SessionVariables那样安全和性能。不管怎样,我都想知道如果你有大量数据,性能会如何。在这里找到这个,请注意:Im阅读一篇关于Cache类的文章,听起来不错。在ASP.NET开始从缓存中删除项目之前,您可以设置分配给chache的内存量。您可以通过密钥访问项目,该密钥可能是应用程序中的用户ID,其线程是安全的,但请注意,缓存处于应用程序级别,并且所有用户都在同一应用程序中。如果需要每用户缓存,可以使用Sessionvariables。