当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 编程高手 ASP.NET 状态管理

ASP.NET
asp.net Execl的添加,更新操作实现代码
asp.net 生成曲线图实现代码
从外部的js文件中获取ASPX页面的控件ClientID
asp.net 因为数据库正在使用的解决方法
asp.net Repeater 自递增
asp.net 实现防迅雷等下载工具盗链
ASP.NET封装的SQL数据库访问类
asp.net 通过指定IP地址得到当前的网络上的主机的域名
aspx 服务器架设问题解决
ASP.NET Session使用详解
Asp.net 5种页面转向方法
ASP.NET 用户多次登录的解决方法
ASP.NET下母版页和内容页中的事件发生顺序整理
asp.net 程序性能优化的七个方面 (c#(或vb.net)程序改进)
从客户端检测到有潜在危险的Request.Form值的asp.net代码
asp.net CommunityServer中的wwwStatus
在应用程序级别之外使用注册为allowDefinition=''MachineToApplication''的节是错误的
.net开发人员常犯的错误分析小结
ASP.net Substitution 页面缓存而部分不缓存的实现方法
asp.net 生成静态时的过滤viewstate的实现方法

编程高手 ASP.NET 状态管理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 117 ::
收藏到网摘: n/a

一般而言,HTTP协议是非状态服务,它不保存任何用户请求信息。直至NetScape开始使用Cookies来保存用户请求信息,Web应用程序有了极大的发展。现在ASP.NET程序员可以使用很多种方式来保存用户请求信息。
下面主要介绍ASP.NET关于状态管理的几种方式。

客户端
ASP.NET,提供了Cookies, QueryStrings (URL), Hidden fields, View State and Control state (ASP.NET 2.0),来管理客户端请求。

一。Cookie

Cookie是以文本存储于计算机中,使用name-value匹配。一般用户存储标识用户信息,如:用户名,用户使用配置等。虽然Cookie可以被加密存储,但不推荐在Cookie中保存用户密码。第二,Cookie的大小是限定的,所以不适合存储大型数据。
Example:
1。获取用户ID
2。设置Cookie

Response.Cookies["UserId"].Value=username;
优点:
使用简单
缺点:
1。客户端可以禁用Cookie
2。Cookie在每次请求或发送时都会被加载,影响传输。
3。易被攻破,所有不适合存储安全信息。

二。Hidden fields(隐藏控件)
Hidden field是在页面级保存信息。与其他用户标准控件的区别是,Hidden Field不被呈现在页面中。当页面提交的时候,Hidden Field中的值将被一同发送给服务端。虽有在ASP.NET 2.0中,我们可以使用ViewState来代替,但Hidden Fields依然可以用来存放一些不关键信息。

protected System.Web.UI.HtmlControls.HtmlInputHidden Hidden1;

//to assign a value to Hidden field

Hidden1.Value="Create hidden fields";

//to retrieve a value

string str=Hidden1.Value;


优点:
1。使用简单
2。可以存储少量数据
缺点:
1。不安全,以明文的形式直接从网络传输

三。View State(状态视图)

状态视图ViewSate,可以用来为单独用户存储信息。你可以通过设置EnableViewState属性来控制ViewState的使用,在默认的情况下属性值为True。ViewSate在每次用户请求或服务端响应时,都会被传输。所以,为了减少网络带宽的使用,可以在不需要状态视图时设置EnableViewState属性值为False。ViewSate在页面中的存储是经过Base64转码的,增加了额外的数据量,所以一定要注意保存较少的ViewSate。


// Add item to ViewState

ViewState["myviewstate"] = myValue;

//Reading items from ViewState
Response.Write(ViewState["myviewstate"]);

优点:

操作简单
被加密
可以在控件级别使用
缺点:

加密编码增加了页面的大小
增价了网络传输

四:Query strings

Query String常用于页面传值。很多浏览器都会有长度限制,一般在255个字节。值得注意的是,尽量使用Server.UrlEncode,来避免一些意外情况,如Sql注入。

string productid;
productid=Request.Params["productid"]

服务端
一。Application

Application在整个应用程序都是可见的,所有用户分享同一个Application。在ASP中,常用来存放链接字符串。

Application.Lock();

Application["mydata"]="mydata";

Application.UnLock();


二。Session
Session为每个用户单独存储用户信息。Session有三种存放方式。"inproc" , "sqlserver" , "stateserver。
InProc,数据保存在服务端进程中。由于目前有600M的内存限制,可以导致进程重启,而失去所有的状态信息。
SqlServer,存放与数据库之中,用户状态可以永久保留。
StateServer,存放与另一台状态服务器中。

Session["UserId"]="UserId";
string UserId = Session["UserId"].ToString();