ASPNET的工作原理
客户端请求--〉服务器找aspx-->ASPNET代码被发送给CRL进行编译-->返回HTML给浏览器
HTTP是一种无状态的协议
1 保存状态的办法
1)利用客户端保存
1 ViewState,每个控件都有这个属性,所以在使用之前应该打开,但是它保存的内容不安全
private void UseViewState()
{
if(ViewState["count"]==null)
ViewState["count"]=0;
int count=(int)ViewState["count"];
count+=1;
ViewState["count"]=count;
}
2 利用隐藏域 HtmlInputHidden,但提交表单时隐藏的东西一起提交给服务器,必须使用POST方法,还有就是不安全
3 利用Cookie,Cookie是保存在客户端的,位置C:/Documents and Settings/UserName/Cookies,用途:
用户的个人配置,注册,弹出窗口
设置
Response.Cookies["username"].Value="prolove";//在服务器段设置
读取
string username= Request.Cookies["username"].Value
清空
Response.Cookies["username"].Value=null;
设置时间
Response.Cookies["username"].Expires=new DataTime(2008,1,11);
模拟登录
private void Logo(string username,string pwd)
{
Response.Cookies["username"].Value=username;
Response.Cookies["pwd"].Value=pwd;
}
private bool IsLogo()
{
if(Request.Cookies["username"]!=null)
{
return true;
}
else
{
return false;
}
}
4 使用地址栏传递,不应该太长,不安全,使用GET方法
Response.Redirect("A.aspx?username="+username);
Request.Params["username"];
5 使用表单传
Request.Form["username"];
Request["username"];
2)利用服务器保存
1 Aplication应用程序级别的状态保存
注意加锁,对于频繁使用的数据可以放在里面,但是不应该太大.
private void UseApp()
{
Application.Lock();
if(Application["count"]!=null)
{
Application["count"]=Covert.ToInt32(Application["count"])+1;
}
else
{
Application["count"]=1;
}
Application.UnLock();
}
2 Session会话,每人一个,它和App都是存在于内存中的,但是ASPNET中的Session也可存储在硬盘上
<sessionState mode="inProc" cookieless="false" timeout="20"/>//inproc表明存储在硬盘上
方法:
TimeOut()过期时间
Abandon() 结束会话
Clear() 清空
3)利用数据库进行存储,对于大量的信息情况下