ASP.NET 中的状态管理17 Mar 2025 | 4 分钟阅读 在本文中,我们将详细了解 ASP.NET 中的状态管理。 状态管理是什么意思? 状态管理是一个过程,通过该过程,状态和页面信息在对相同或不同页面的多个请求中保持不变。由于 HTTP 是一种无状态协议,服务器在 根据客户端的请求将响应发送回客户端后,不会存储任何信息。当用户再次提交请求时,服务器将其视为新用户。这称为无状态模型。过去开发和托管静态网站时,此模型是可行的。现在,对于交互式网站或动态网站,需要保留一些信息来识别用户,在同一会话和同一应用程序中再次与用户交互。这个概念被称为有状态协议。信息可能与用户、数据对象、网页或服务器对象有关。 为了支持这种模型,ASP.NET 提供了两种类型的状态管理技术,即服务器端和客户端,如图所示。  服务器端状态管理选项ASP.NET 提供了在服务器端以及客户端保存信息的功能。以下是服务器端状态管理中可用的选项。 - 应用程序状态:应用程序状态允许在应用程序级别保存数据,该数据在整个应用程序生命周期内都可访问。应用程序的生命周期在 IIS 启动时开始,在 IIS 停止时结束。
- 会话状态:会话状态持续存在,直到用户处于活动状态或会话时间到期。当用户提交请求时,会话开始。当时间到期或用户显式放弃会话时,会话结束。所需信息可以保存在会话中,以便同一用户在同一应用程序中稍后使用。
- 配置文件属性:此选项还允许保存用户特定的数据。它类似于会话状态,除了存储在配置文件状态中的数据永远不会过期。使用此属性时,需要配置 SQLProfileProvider 类。它允许将数据存储在 SQL 数据库中。由于数据存储在数据库中而不是应用程序内存中,因此即使 IIS 反复重启,也不会有丢失数据的风险。
- 缓存:缓存是一种技术,通过该技术,频繁使用的数据和网页存储在缓存中,从而可以避免重复的检索成本。将频繁使用的数据存储在缓存中可确保高可用性、提高性能和可伸缩性。缓存是 System.Web.Caching Cache 类的对象。使用缓存的主要缺点是它不可靠。先前存储在缓存中的数据会自动删除,以满足当前进程的内存要求。
客户端状态管理选项客户端状态管理中可用的选项有助于将信息存储在页面中或客户端计算机中。服务器端不存储任何信息。以下选项用于客户端状态管理。 - 视图状态:视图状态提供了在客户端保留页面和控件值的功能。信息在回发后存储。回发是用户对页面的请求,而不是第一次。如果 IsPostBack 属性的值为 true,则表示该页面不是第一次请求。视图状态可以在页面级别、应用程序级别、计算机级别和控件级别。在页面级别状态管理中,只要用户在当前页面上,信息就会保留。每当用户提交表单时,页面和控件的当前状态都会哈希为一个字符串并保存在页面的隐藏字段中。如果数据超过 MaxPageStateFieldLength 属性设置的限制,可以使用多个隐藏字段。当页面发送到服务器时,页面会解析视图状态字符串并恢复信息。这是默认机制。视图状态可以在任何阶段禁用。当需要禁用视图状态时,在代码中使用属性 EnableViewState="false"
为了演示 视图状态 选项的概念,请考虑一个 ASP.NET 项目,该项目每次单击按钮时,都会显示该按钮被单击的次数。 - 控件状态:这是另一种客户端状态管理选项。当需要存储与自定义控件相关的控件数据时,将使用此选项。视图状态可以禁用,但控件状态不能禁用。
- 隐藏字段状态:ASP.NET 允许将信息存储在隐藏字段中,隐藏字段是服务器控件,可用于在页面级别存储信息。隐藏字段的值与其他控件的值一起发送到 HTTP 表单集合。隐藏文件可以在源文件中创建,如下所示。<input type="hidden" id="username" name="username" value=""
可以在代码隐藏文件中访问此隐藏字段,如下所示。 Dim st as String = Request QueryString("username") - Cookies:Cookie 是存储在客户端计算机中的少量信息。
- QueryString:QueryString 包含通过 URL 发送到服务器的信息。
|