ASP.NET Web – 状态管理



























状态类型 客户端或服务器资源 有效时间
ViewState 客户端 只在一个页面中
Cookie 客户端 关闭浏览器时会删除临时cookie,永久cookie存储在客户系统的磁盘上
Session 服务器 会话状态与浏览器相关。会话在超时(默认为20分钟)后变得无效
Application 服务器 在所有的客户端上共享应用程序状态,这个状态在服务器重新启动之前都是有效的
Cache 服务器 类似于应用程序状态,缓存是共享的。但是,使缓存无效有更好的控制方式

客户端的状态管理

-ViewState

Web服务器控件自动使用ViewState来使事件工作。ViewState包含的状态与控件发送给客户端时包含的状态相同。当浏览器把窗体发送回服务器时,ViewState包含了初始值,但所发送的控件包含新值。如果初始值和新值有区别,就调用相应的事件处理程序。

缺点:数据总是要从服务器传送给客户端,再从客户端传送给服务器,增加了网络流量。在Page指令中把EnableViewState属性设置为false,就可以关闭页面中有控件的ViewState。

还可以把定制的数据存储在ViewState中。为此可以使用索引符和Page类的ViewState属性。ViewState[“mydata”] = “my
data”;

优点:每个浏览器都可以使用这个特性,用户不能关闭它。

ViewState只保存在页面中。如果状态应保存在多个不同的页面中,就应使用cookie在客户端保存状态。

-cookies

在HTTP头中定义。使用HttpResponse类可以把cookie发送给客户端。Response是Page类的一个属性,它返回一个HttpResponse类型的对象。此类定义了返回HttpCookieCollection的Cookies属性。使用HttpCookieCollection可以向客户端返回多个cookie。

以下代码说明了如何把cookie发送给客户端

string myval = “myval”;

HttpCookie cookie = new HttpCookie(“mycookie”)

cookie.Values.Add(“mystate”, myval)

Response.Cookies.Add(cookie)

cookie可以是临时的,仅在一个浏览器会话中有效,也可以存储在客户端的磁盘上。为了使cookie变成永久的,必须使用HttpCookie对象设置成Expires属性。

Var cookie = new HttpCookie(“mycookie”)

cookie.Values.Add(“mystate”,“myval”)

cookie.Expires = DateTime.Now.AddMonths(3)

Response.Cookies.Add(cookie)

浏览器只能给一个服务器存储20个cookie,给所有服务器存储300个cookie。存储的数据不能超过4K.

服务器端状态管理

-会话

会话状态与浏览器相关,客户在服务器第一次打开ASP.NET页面时,会话就开始了。当客户在20分钟内美欧访问服务器时,会话结束。

会话状态可以存储在HttpSessionState对象中。可以使用Page类的Session属性来访问与当前HTTP上下文相关的会话状态对象。

-应用程序

如果应在多个客户端之间共享数据,就可以使用应用程序状态。使用HttpApplicationState类。在改变应用程序变量之前,必须用Lock()方法锁定应用程序对象。否则就会出现线程问题,因为多个客户可以同时访问一个应用程序变量。

不要在应用程序状态中存储太多的数据,因为应用程序状态需要占用服务器资源,直到服务器停止或重新启动之后,才会释放这些资源。

-缓存

缓存是服务器状态,它类似于应用程序状态,因为它在所有客户端上共享。缓存比应用程序状态灵活,可以通过多种方式来定义状态的失效时间。对于缓存,需要使用System.Web.Caching名称空间和Cache类。

ASP.NET Web – 状态管理,码迷,mamicode.com

时间: 2024-08-24 21:24:00

ASP.NET Web – 状态管理的相关文章

Asp.net Web 状态管理

最近在网上搜罗了 ASP.NET WEB 状态管理方面的一些内容,终于把这些内容整合总结了一下. 1. 希望自己通过整理,能够掌握一些,为自己投资. 2. 以便自己忘记,又要浪费时间搜罗. 3. 希望对园友有帮助,这是一件很开心的事情 4. 希望大侠们看到问题及时帮忙指正,不想误导自己,更不想误导园友,在下不胜感激 不再磨叽,马上上菜 名称 用户 生存时间 数据 位置 优势 劣势 建议 Application 所有用户 应用程序重新启动 没有限制,只被存储一次 服务器,可以存储在数据库 1. 实

ASP.NET Core——状态管理之视图状态

在实际项目中,常常需要保存用户信息来简化掉一些不必要的重复动作,提供人性化和智能的交互方式.然而HTTP协议是无状态的,每个新页面请求都是接.ASP.NET提供了保存状态的不同选项,使得状态额可以在客户端或服务器上保存. 要在客户端保存状态,ASP.NET提供了视图状态.cookie和参数选项.因为安全问题,使用这些状态有一些限制.在服务器端可以使用会话对象.全局应用程序状态.缓存和用户配置文件来保存状态. ASP.NET也提供了一些用于访问状态管理功能的属性.例如,HttpSessionSta

ASP.NET状态管理详解,让你明明白白

开发WinFrom的程序员可能不会在意维护应用程序的状态,因为WinFrom本身就在客户端运行,可以直接在内存中维护其应用程序状态.但ASP.NET应用程序在服务器端运行,客户端使用无状态的http协议对ASP.NET应用程序发出请求,ASP.NET应用程序响应用户请求,向客户端发送请求的HTML代码,服务器并不会维护任何客户端状态.考虑一个有成千上万并发用户的服务器,如果为每一个用户都维护状态的话会耗费非常多的资源. 由于使用无状态的http协议作为web应用程序的通信协议,当客户端每次请求页

[原创]java WEB学习笔记28: 会话与状态管理Cookie 机制

1.会话与状态管理 1)背景 ① HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的: ② 作为 web 服务器,必须能够采用一种机制来唯一地标识一个用户,同时记录该用户的状态: ③ 问题:怎么才能实现网上商店中的购物车呢:某个用户从网站的登录页面登入后,再进入购物页面购物时,负责处理购物请求的服务器程序必须知道处理上一次请求的程序所得到的用户信息. 2)会话和会话状态 ① WEB应用中的会话:指一个客户端浏览器与WEB服务

web应用程序的状态管理

一.Web应用程序状态形式1.表单隐藏字段2.cookie——把用户状态信息通过服务器发送到客户端浏览器中保存3.Session会话跟踪,服务器为客户端创建并维护的用于存放客户状态数据的session对象4.URL地址重写.(一)cookie 1:Cookie原理: 服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端,当浏览器再次访问相同的应用时,会将原先的Cookie通过请求信息带到服务器端. Cookie cookie = new Cookie("cool",

使用ASP.NET MVC和AngularJS的Web模块化管理

快速浏览标题便了解到本文要谈到公开资源平台,该平台允许快速,轻松地创建一个管理网络,并不需要在风格,导航,解决方案架构和其它跟主要任务无关的琐事上花费过多的时间. 平台视觉图和其中一块模板:(见附图一) 很长一段时间里,我们使用WPF技术模块化管理应用.我们做出的决定是将此管理迁移到网站中.最后我们得出了2个不同的产品:第一个:平台,就是这篇文章致力于介绍的,第二个是用于电子商务应用程序开发使用的集合模块. 技术运用于:(见附图二) 我们决定使用这些技术都是我们广泛应用微软产品的经验结果. 我们

[水煮 ASP.NET Web API2 方法论](1-8)添加 Session 状态

问题 ASP.NET Web API 构建 Web 应用程序时,要求使用 Session 在服务器存储一些用户特定的信息 解决方案 ASP.NET Web API 不支持 Session,因为 API 根本不依赖于System.Web.他想试图摆脱伪造 Session,非 HTTP这样的概念. 然而,如果我们 在 ASP.NET 运行时中运行 ASP.NET Web API,还想启用 Session.我们可以通过两种方式来做: 全局:应用于整个 API 局部:应用于指定路由 启用全局方式,我们需

(转)web会话管理方式

阅读目录 1. 基于server端session的管理 2. cookie-based的管理方式 3. token-based的管理方式 4. 安全问题 5. 总结 http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端.所以对我们的应用而言,它是需要有状态管理的,以便服务端能够准确的知道http请求是哪个用户发起的,从而判断他是否有权限继续这个请求.这

ASP.NET Web API 2基于令牌的身份验证

基于令牌的认证 我们知道WEB网站的身份验证一般通过session或者cookie完成的,登录成功后客户端发送的任何请求都带上cookie,服务端根据客户端发送来的cookie来识别用户. WEB API使用这样的方法不是很适合,于是就有了基于令牌的认证,使用令牌认证有几个好处:可扩展性.松散耦合.移动终端调用比较简单等等,别人都用上了,你还有理由不用吗? 下面我们花个20分钟的时间来实现一个简单的WEB API token认证: Step 1: 新建一个空的WEB API项目,项目名称就设置为