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超时范围。