Welcome 微信登录

首页 / 网页编程 / ASP.NET / Asp.Net的状态管理:Session、Application和Cache

Asp.Net的状态管理:Session、Application和Cache2014-08-27上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329773.html。除了在客户端上保存状态外,还可以在服务器上保存状态。使用客户端的状态,其缺点在于增加了数据在网络之间的传送。使用服务器端状态的缺点在于,服务器必须给客户端分配资源,下面详细讨论服务器端的状态管理技术。

服务器端的状态管理

Session

会话状态与浏览器会话相关。客户在服务器上第一次打开Asp.Net页面时,会话就开始了。当客户在20分钟之内没有访问服务器,会话结束,销毁session。

可以在Global Application类(即全局应用程序类)中定义自己的代码,会话开始或结束时运行。会创建Global.asax文件。在这个文件中,定义了一些时间处理程序例程:

public class Global : System.Web.HttpApplication{protected void Application_Start(object sender, EventArgs e){}protected void Session_Start(object sender, EventArgs e){}protected void Application_BeginRequest(object sender, EventArgs e){}protected void Application_AuthenticateRequest(object sender, EventArgs e){}protected void Application_Error(object sender, EventArgs e){}protected void Session_End(object sender, EventArgs e){}protected void Application_End(object sender, EventArgs e){}}
会话状态可以存储在HttpSessionState对象中。与当前Http环境相关的会话状态对象可以使用Page类的Session属性来访问。在Session_Start()事件处理程序中,可以初始化会话变量。在下面的实例中,名为mydata的会话状态被初始化为0:

1  protected void Session_Start(object sender, EventArgs e)

2         {

3             Session["mydata"] = 0;

4         }

可以在页面中通过使用会话状态名读取会话状态。

protected void Unnamed2_Click(object sender, EventArgs e){int val = (int)Session["mydata"];myLabel.Text = val.ToString();val += 5;Session["mydata"] = val;}