模拟Session原理

2018-09-06 12:20

阅读:449

  Session是保存在服务器端的,关于用户个人信息的一个小容器!用来保存每一个用户的关键信息!每个用户访问时候,都会创建一个SessionID,这个SessionID会保存到浏览器的cookie中。服务器根据SessionID关联到此浏览器的用户。

  那么我先建一个SessionManager类,用来管理Session

   管理Session的类 public class SessinManager
{ //模拟session原理!
private static IDictionary<string, IDictionary<string, object>> data = new Dictionary<string, IDictionary<string, object>>();
public static IDictionary<string, object> GetSession(string sessionID)
{
if//此id是与浏览器密切相关的,基本上一个浏览器就一个SessionID
{ //一般保存在浏览器的cookie中。
return data[sessionID];
}
else
{
IDictionary<string, object> session = new Dictionary<string, object>();
data[sessionID] = session; //以传过来的SessionID创建一个Dictionary。
return session;
}
}
}

  然后在用户访问的时候产生SessionID,创建Session空间。

   设置,读取Session protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies[MySessionID] == null) //在网站主页(入口)设置SessionID。
{
string sessionID = Guid.NewGuid().ToString(); //随机产生一个ID,并保存到cookie中。
Response.SetCookie(new HttpCookie(MySessionID,sessionID));
}
}
protected void SetSession_Click(object sender, EventArgs e)
{
string sessionID=Request.Cookies[MySessionID].Value; //从cookie中读取SessionID
IDictionary<string, object> session = SessinManager.GetSession(sessionID);
//根据cookie中保存的SessionID访问服务端的开辟的内存空间。
session[UserMessage] = 小小鸟


评论


亲,登录后才可以留言!