SessionState和ViewState有什么区别?


Answers:


143

会话状态包含与与服务器的特定会话(由特定客户端/浏览器/计算机)有关的信息。这是一种跟踪用户在网站上正在做的事情的方法。跨多个页面,以了解Web的无状态性。例如,特定用户的购物车的内容是会话数据。Cookies可以用于会话状态。另一方面,“
查看状态 ”是特定于特定网页的信息。它存储在一个隐藏字段中,因此用户看不到它。它用于维持用户对页面记住上次所做操作的错觉-每次回发时都不要给他一个干净的页面。检查此页面了解更多信息


96

会话状态保存在服务器上,ViewState保存在页面中。

会话状态通常在用户闲置一段时间后清除(没有发生包含请求cookie中会话ID的请求)。

视图状态在隐藏字段中的后续发布中发布。


30
+1是-重要的一点是ViewState在客户端和服务器之间上下移动,而SessionState仍在服务器上。
Gordon Mackie JoanMiro 09年

1
这应该是正式答案
Fandango68

33

会话状态

  • 可以保留在内存中,这使其成为一种快速的解决方案。这意味着无法在Web场/ Web花园中共享状态。
  • 可以保存在数据库中,对Web场/ Web Gardens有用。
  • 会话结束时清除-通常在闲置20分钟后清除。

ViewState

  • 在服务器和客户端之间来回发送,占用带宽。
  • 没有有效期限。
  • 在网络农场/网络花园中很有用

14

用法: 如果要存储要在其他网页上访问的信息,则可以使用SessionState

如果要存储要从同一页面访问的信息,则可以使用Viewstate

存储 Viewstate存储在页面本身内(以加密文本形式),而Sessionstate存储在服务器中。

SessionState将在以下情况下清除

  1. 由程序员清除
  2. 已被用户清除
  3. 超时

5
ViewState未加密。它们看起来只是这样,但可以轻松解码。
Vandel212

5

会话主要用于存储用户特定数据[会话特定数据]。对于会话,您可以在整个会话中使用该值,直到会话过期或用户放弃会话为止。Viewstate是仅在使用它的页面中具有作用域的数据类型。您可以拥有其他页面可使用的viewstate值,除非将这些值传输到所需页面。同样,在使用viewstate的情况下,所有服务器端控制数据都将作为__Viewstate中的键值对传输到服务器,并在发生回发时传输回并呈现给客户端中的相应控件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.