.NET状态管理

本文详细介绍了ASP.NET中客户端及服务器端的状态管理方法,包括视图状态、隐藏域、Cookies等客户端状态管理手段,以及Application对象和Session对象等服务器端状态管理手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.NET状态管理

Http协议是一种无状态协议,但在实际应用中,很多时候都需要保存其状态以便下次访问。因此应用程序必须提供能保存状态的状态管理功能。状态可保存在客户端,也可保存在服务器端。

1.  基于客户端的状态管理

1)  视图状态:

a)         ViewState属性提供一个字典对象,用于在同一页多个请求之间保留值。

b)         存储方式:视图状态中的值是经过哈希计算和压缩,并针对Unicode实现进行编码,存储在页的多个隐藏域中,如果存储量过大会影响页的发送和显示速度。

c)         安全性:它可以被篡改,可以从查看页输出源中,看到隐藏域的信息,其安全性高于隐藏域。

d)         存取:ViewState[“Name”]=”xxxx”String Name=ViewState[“Name”].tostring()

2)  隐藏域:

a)       此控件将呈现为一个标准的Html隐藏域,在浏览器中不以可见呈现。

b)       存储方式:只支持简单的存储结构,只提供一个字符串值域存放信息。存储受限,量过大可能受到代理和防火墙的阻止。

c)       安全性:也可能被篡改。

3)  Cookies:

a)       存储在客户端的文本文件中。

b)       存储方式:可以是临时的,也可以是永久的。浏览器最大支持4096字节。

c)       安全性:可能被客户机篡改和操纵。

d)       简单的操作:用Response 发送Cookie,用Request 获取Cookie

HttpCookie MyCookie=new HttpCookie(“userName”)  //创建一个userNameCookie

MyCookie.Value //设置当前Cookie的值

MyCookie.Expires= DataTime.Now.addHours(1) //设置有效期

Response.Cookies.Add(MyCoookie) //发送到客户端

//获取Cookie的信息

HttpCookie getCookie=Request.Cookies[“userName”]

String userName=getCookie.toString()

4)  URL字符串:

a)       如:http://hao123.com?userId=1&userName=cc

b)       存储量:2083字符。 

2.  其于服务器端的状态管理:

1)  Application对象:是针对所有客户的。每一个客户都可使用。

a)       数据的存储和提取:Application[“Name”]=”陈在下”,                   String Name=Application[“Name].toString()

b)       同时访问要加锁:Application.Lock() ,Application.UnLock()

2)  Session对象:每个用户对网站的一次访问,超时自动结束会话。

a)       数据的存取:Session[“Name”]=”xxx”string Name=Session[“Name”].tostring()

b)       webconfig配置:<sessionState mode=”inProc” cookieless=”false” timeout=”20” />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值