0.应用程序级别状态管理-Application 对象
会话级别状态管理-Session 对象、Cookie技术
1.应用程序状态与Application对象(是HttpApplicationState类的实例,是ASP.NET内置对象)
1)Application对象有一个公开的状态集合-Contents,可以通过代码访问集合中的变量项
eg:Application["Message"]="MyString"; Application["StartTime"]=DataTime.Now;
Application.Contents["Message"]="MyString";
Application.Contents["StartTime"]=DataTime.Now;
2)应用程序状态的同步(为了多线程访问的安全性)
Application.Lock(); //锁定
Application["count1"] = (int)Application["count1"] + 1;
Application.UnLock(); //解锁
2.会话状态与Session对象
1)会话状态模式(在web.config文件中设置):
1>进程内会话模式 <sessionState>元素的mode属性为InProc
2>进程外会话模式 <sessionState>元素的mode属性为StateServer
3>SQLServer会话模式 <sessionState>元素的mode属性为SQLServer
2)可以通过Session内置对象(HttpSessionState类的实例)来实现会话状态。
Session对象的使用:
Session["stime"]=DateTime.Now; 或 Session.Contents["stime"]=DateTime.Now;
3.Cookie技术
1)Response对象和Request对象包含Cookie属性,该属性是HttpCookieCollection类的实例
HttpCookie类提供了创建/操作Cookie的各种方法,HttpCookieCollection是对应的集合类
2)在asp.net中操作Cookie
1>写Cookie(服务器—>客户端)
HttpCookie cookie1 = new HttpCookie("userinfo"); //创建一个名为userinfo的Cookie
cookie1.Values["username"]= txtUserName.Text; //为Cookie添加信息
cookie1.Values["password"]= txtPassWord.Text;
cookie1.Expires = new DateTime(2008,12,12); //设置Cookie的有效期
Response.Cookies.Add(Cookie1); //将Cookie保存到客户端
2>读Cookie(客户端->服务器)
HttpCookie cookie1 = Request.Cookies["userinfo"]; //从客户端获取Cookie
Response.Write(cookie1.Values["username"]); //读取Cookie中的信息
Response.Write(cookie1.Values["password"]);
4.Application对象/Session对象的StaticObjects集合-服务器端对象标记
1)在Global.asax文件中,添加如下的标记:
<object id="idname" runat="server" scope="application" class="要实例化的.NET类名">
即为Application.StaticObjects集合添加了一个名为idname的元素,该元素是一个类的实例
示例:
------------------------------------------------------------------
//在Global.asax文件中,添加如下的标记:
//注意:class属性的值(类名)必须是带完整命名空间的类名,否则会报错
<object runat="server" scope="application" id="AppInfo" class="MyWebApp.Info"></object>
//在某页面的后台代码中
Info appInfo = (Info)Application.StaticObjects["AppInfo"]; //强制类型转换
Response.Write(appInfo.counter); //输出Info类对象的counter属性
2)在Global.asax文件中,添加如下的标记:
<object id="idname" runat="server" scope="session" class="要实例化的.NET类名">
即为Session.StaticObjects集合添加了一个名为idname的元素,该元素是一个类的实例
示例:
------------------------------------------------------------------
//在Global.asax文件中,添加如下的标记:
//注意:class属性的值(类名)必须是带完整命名空间的类名,否则会报错
<object runat="server" scope="session" id="SessionInfo" class="MyWebApp.Info2"></object>
//在某页面的后台代码中
Info2 sessionInfo = (Info2)Session.StaticObjects["SessionInfo"]; //强制类型转换
Response.Write(sessionInfo.time); //输出Info2类对象的time属性