asp.net - 在整个网站中使用 session

标签 asp.net session-variables

我已经开始考虑重写客户网站上的一些页面,我可以看到,例如,只要有人登录,就会设置 53 个 session 变量

对我来说,在您登录后立即设置所有内容,然后在整个网站上返回这些 session 或添加新 session ,这似乎很疯狂。

他们的网站经常会收到错误,因为许多 session 中的一个已失去其值(value)。

所以我的问题是重新制作这些页面的最佳方法是什么。

  1. 继续使用这个数量的 session 是个好主意吗?
  2. 是否有使用 Session 的更好选择?
  3. 网站上的所有页面都需要一些变量,那么是从每个页面的数据库中检索这些变量还是在 session 中设置这些变量更好?

我相信应该只需要一个 session ,那就是 USERNAME/USER-ID,其他一切都应该在需要时从数据库中获取。

提前致谢

最佳答案

如此频繁地使用 session 通常不是一个好主意,但这取决于存储在那里的数据类型。如果它是一堆字符串和整数值,它可能不是太在意,但如果它们在 session 中存储健壮的对象和/或大量数据,我肯定会考虑重构它。

根据经验,我尽量避免将 session 用于与用户相关的数据以外的任何内容。将 session 用于除此以外的目的可能很诱人,但如果设计和实现良好,您实际上并不需要这样做。

这里有一些关于在哪里存储东西的指导原则:

  • 对于特定于用户且在整个应用程序中频繁访问的数据,利用 session 减少对数据库的访问

  • 对于或多或少静态且不依赖于用户或与用户无关的数据,利用缓存或应用程序状态来减少对数据库的访问

  • 对于页面特定的数据,使用 ViewState 和/或隐藏字段。但是,不要使用 ViewState 来存储大型对象或数据集

  • 对于用户可以安全查看的数据,考虑使用 QueryString 在页面之间传递信息

上述原则通常会指导您朝着正确的方向前进,但也有异常(exception)。只需考虑将数据存储在何处以及为什么将数据存储在那里,就可以了。

关于asp.net - 在整个网站中使用 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993482/

相关文章:

c# - session 变量 + WebMethod 变量值未更新

c# - 为什么 Controls 集合不提供所有 IEnumerable 方法?

c# - 使用正则表达式删除长文本中字符附近的空格

c# - Facebook 登录抛出“应用程序配置不允许给定的 URL。: One or more of the given URLs is not allowed

session - 无状态 Web 应用程序有哪些好处?

c# - 在页面之间传递 session 变量

java - Servlet session 属性的多态性

asp.net - Foreach MVC3 成员(member)用户

c# - JSON Post 我的 .NET MVC 2 Controller 需要什么参数

perl - Embperl 中 %mdat(与 %udat 相比)的目的是什么?