一般而言HTTP协议是非状态服务它不保存任何用户请求信息直至NetScape开始使用Cookies来保存用户请求信息Web应用程序有了极大的发展现在ASPNET程序员可以使用很多种方式来保存用户请求信息
下面主要介绍ASPNET关于客户端状态管理的几种方式
ASPNET提供了Cookies QueryStrings (URL) Hidden fields View State and Control state (ASPNET )来管理客户端请求
一Cookie
Cookie是以文本存储于计算机中使用namevalue匹配一般用户存储标识用户信息如用户名用户使用配置等虽然Cookie可以被加密存储但不推荐在Cookie中保存用户密码第二Cookie的大小是限定的所以不适合存储大型数据
Example
获取用户ID
if (RequestCookies[UserId] != null) lbMessagetext = Dear + RequestCookies[UserId]Value + Welcome to our website!; else lbMessagetext = Guestwelcome to our website!;
设置Cookie
ResponseCookies[UserId]Value=username;
优点
使用简单
缺点
客户端可以禁用Cookie
Cookie在每次请求或发送时都会被加载影响传输
易被攻破所有不适合存储安全信息
二Hidden fields(隐藏控件)
Hidden field是在页面级保存信息与其他用户标准控件的区别是Hidden Field不被呈现在页面中当页面提交的时候Hidden Field中的值将被一同发送给服务端虽有在ASPNET 中我们可以使用ViewState来代替但Hidden Fields依然可以用来存放一些不关键信息
现在ASPNET程序员可以使用很多种方式来保存用户请求信息下面主要介绍ASPNET关于状态管理的几种方式
protected SystemWebUIHtmlControlsHtmlInputHidden Hidden; //to assign a value to Hidden field HiddenValue=Create hidden fields; //to retrieve a value string str=HiddenValue;
优点
使用简单
可以存储少量数据
缺点
不安全以明文的形式直接从网络传输
三View State(状态视图)
状态视图ViewSate可以用来为单独用户存储信息你可以通过设置EnableViewState属性来控制ViewState的使用在默认的情况下属性值为TrueViewSate在每次用户请求或服务端响应时都会被传输所以为了减少网络带宽的使用可以在不需要状态视图时设置EnableViewState属性值为False
ViewSate在页面中的存储是经过Base转码的增加了额外的数据量所以一定要注意保存较少的ViewSate
// Add item to ViewState ViewState[myviewstate] = myValue; //Reading items from ViewState ResponseWrite(ViewState[myviewstate]);
优点
操作简单
被加密
可以在控件级别使用
缺点
加密编码增加了页面的大小
增价了网络传输