What is the difference between SessionState and ViewState?

ASP.NET 中会话状态和视图状态的区别是什么?

193434 次浏览

会议状态

  • 可以持久存储在内存中,这使它成为一个快速的解决方案。这意味着状态不能在 Web 农场/Web Garden 中共享。
  • 可以保存在数据库中,对于 Web 农场/Web 花园非常有用。
  • Is Cleared when the session dies - usually after 20min of inactivity.

ViewState

  • 在服务器和客户端之间来回发送,占用带宽。
  • 没有保质期。
  • Is useful in a Web Farm / Web Garden

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

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

The view state is posted on subsequent post back in a hidden field.

Session State contains information that is pertaining to a specific session (by a particular client/browser/machine) with the server. It's a way to track what the user is doing on the site.. 翻了好几页...amid the statelessness of the Web. e.g. the contents of a particular user's shopping cart is session data. Cookies can be used for session state.
另一方面,View State 是特定于特定网页的信息。它存储在一个隐藏字段中,因此用户不可见。它是用来维持用户的错觉,该网页记得他在它的最后一次-不要给他一个干净的网页,每次他回帖。Check this page for more.

会话主要用于存储用户特定的数据[会话特定的数据]。对于会话,您可以使用整个会话的值,直到会话过期或用户放弃会话。 Viewstate 是仅在使用它的页中具有作用域的数据类型。除非将这些值转移到所需的页,否则无法让其他页访问这些视图状态值。同样,在 Viewstate 的情况下,所有服务器端控件数据作为 _ _ Viewstate 中的键值对传输到服务器,并在发生回发时传输回来并呈现给客户机中的适当控件。

用法: 如果要在不同的网页上存储想要访问的信息,可以使用 SessionState

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

储藏室 The Viewstate is stored within the page itself (in encrypted text), while the Sessionstate is stored in the server.

会话状态将在以下条件下清除

  1. 程序员批准了
  2. 使用者批准
  3. 暂停