您的位置:首页 > 理论基础 > 计算机网络

Http状态的传递和保存 之 ASP.NET内置Session

2014-02-17 23:27 375 查看
Session是存放在服务器端的。

登录页面:

public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 从客户端请求中获取用户名和密码
string strUserName = Request["username"];
string strPwd = Request["password"];

if (!string.IsNullOrEmpty(strUserName) && !string.IsNullOrEmpty(strPwd))
{
LoginInfo lInfo = new LoginInfo(strUserName, strPwd);
// 将值写入到Session。
Session.Add("Session_lInfo", lInfo);
Response.Redirect("PostForm.aspx");
}
}
}


跳转页面:

public partial class PostForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 从Session中获取值。
object obj = Session["Session_lInfo"];
if (obj != null)
{
// 获取到Session对应的值
LoginInfo lInfo = (LoginInfo)obj;
Response.Write("您的登录名是:" + lInfo.UserName + "登录密码:" + lInfo.Password);
}
else
{
Response.Redirect("Default.aspx");
}
}
}


但实际上Session的原理也是在客户端存储一个Cookie,

然后根据这个Cookie查询服务器端存储的值。

就跟前一篇自己实现服务器端Cookie的原理是一样的。

Session是依赖于客户端Cookie的。



借助于Cookie机制,可以让我们在服务器端存储数据,这就是Session的原理。



如下图:

将一个值写入到Session,就会在客户端存储一个名称为ASP.NET_SessionId的Cookie。



客户端浏览器在请求服务器时,也会把这一个名称为ASP.NET_SessionId的Cookie发送到服务器端,

服务器端就会去内存中查找这个Cookie对应的值。



Session有自动销毁机制,如果一段时间内浏览器没有和服务器发生任何的交互,

则Session会定时销毁。这也就是为什么一段时间不操作页面,系统会自动退出的原因。

可以 通过Session.Timeout设置Session超时范围。

一般处理程序中使用Session,必须实现System.Web.SessionState.IRequiresSessionState接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: