Asp.net 什么样的数据永远不应该进入会话?

Asp.net 什么样的数据永远不应该进入会话?,asp.net,session,Asp.net,Session,会话中不应保存哪些类型的数据?或对象 此链接也很有用:此答案适用于PHP会话。 如果你指的是$\u会话,那么它存储在硬盘上,因此不能立即在cookies中使用 但是,在共享主机上,有时从其他网站访问会话文件可能很简单 我不会在会话中存储任何您不希望共享主机上的其他人看到的内容。我真希望您能更清楚地了解您所指的会话类型。根据答案,我可以想出几个: 任何类型的密码 大量数据,特别是32位操作系统上的4 GB+数据(如果必须加载到RAM中,则保证内存不足) 可执行代码 原始SQL 咒骂 可能激怒政府

会话中不应保存哪些类型的数据?

或对象


此链接也很有用:

此答案适用于PHP会话。

如果你指的是
$\u会话
,那么它存储在硬盘上,因此不能立即在cookies中使用

但是,在共享主机上,有时从其他网站访问会话文件可能很简单


我不会在会话中存储任何您不希望共享主机上的其他人看到的内容。

我真希望您能更清楚地了解您所指的会话类型。根据答案,我可以想出几个:

  • 任何类型的密码
  • 大量数据,特别是32位操作系统上的4 GB+数据(如果必须加载到RAM中,则保证内存不足)
  • 可执行代码
  • 原始SQL
  • 咒骂
  • 可能激怒政府机构的事情(中国的“自由西藏”,美国总统面临的威胁)
  • 您的银行账户密码或信用卡号码
  • 狂暴的獾。事实上,任何一种獾

只要将
SessionMode=“InProc”
保存在
web.config
中,就可以在会话中存储任何内容。这会将任何会话数据存储在特定于用户的上下文中的web服务器内存中

然而,如果你想有一天扩大规模并在服务器场中运行你的web应用程序,你必须使用另一个SessionMode。这样,您就不能再存储不可序列化的复杂类型的对象(不幸的是,字典是一种常见的候选对象),您将不得不更改您的设计。

  • 数据集:序列化要存储在会话中的数据集可能比数据集本身占用的内存多一个数量级(即1MB数据集可能需要20MB进行序列化/反序列化,并且每次请求都会这样做)
  • 控件:在会话中存储控件(及其集合)意味着ASP.NET无法在页面请求结束时正确清理它们,从而导致内存泄漏

请参阅您不应在会议中提出的其他事项的示例,以及原因。

这可能是一个相当主观的问题。从技术上讲,任何可序列化的内容都可以存储在会话中。但在某些情况下,您肯定不想在会话中添加内容。复杂对象、具有大型集合作为属性的对象等。所有这些对象都被序列化为字节数组并保存在内存中(对于InProc会话状态),然后在需要时再次在代码中反序列化。对象越复杂,来回的资源就越密集


根据您有多少用户,您可能希望限制进入会话的项目数量,并可能使用ViewState或其他持久性方法。如果它真的适合多个页面,那么它可能是会话的一个很好的候选者。如果只在一两页中使用,那么ViewState、QueryString等可能会更好。

库存提示、盗版CD、全长电影(除了“店员”,那部电影很棒)、模拟信息


这个问题似乎有点模糊——我能想到无数种不应该存储在会话中的信息

如果可能,在会话中不存储任何内容。这是一种不可靠的维护状态的方法,尤其是当您需要移动到web场时。而且,我相信这会鼓励糟糕的设计。HTTP是无状态的,在设计网站时,您应该假设对于任何请求,您都可以从头开始。

我不会将
会话
也放在
会话

请提供有关您的环境的更多详细信息,包括语言和如何存储会话数据。这是ASP.NET技术,我在与tepm用户的操作中遇到问题,我将其保留在会话中,还有一个有点复杂的文档上载功能,我将整个文档保留在会话中,直到它们存储在数据库中,由于这是一个团队项目,我们正在进行架构讨论。为什么有人不喜欢这个问题?不要存储Marcel Proust的《寻找失去的时间》的全文。上次我试过,服务器进入睡眠模式,花了3周的时间才唤醒它。+1提醒人们网络中獾是多么危险server@yoda:在您学习清理和彻底粉碎输入之前,您只需被一次獾注射攻击击中。在调查服务器机房内的正常噪音时,也要随身携带重型手电筒。獾?獾?!?我们不需要臭獾!在这种情况下,多GB的数据可能会造成问题。特别是在32位web服务器上(理论上是可能的)。第二段是为什么我总是使用
-我会在尝试存储不可序列化的对象时立即出错。用户会话可用于web服务器场,但不能用于应用程序会话。我同意Jacob的观点。如果您的请求是无状态的,这会使站点更容易测试。@Chris,即使对于用户会话,您也不能100%依赖它们。在任何时候,都可以删除服务器场中的节点,从而清除存储在那里的任何内存会话。当然,您可以将会话存储在数据库中,但此时您最好使用具有已定义架构的实际表。感谢web farms上的信息,非常高兴了解。