相关Session、Cookie体制提议参照文章内容:CookieSession体制详细说明,写的很详尽,已不过多阐释

这篇文章内容根据一个简易的实例揭密Session体制及其和Cookie的差别和联络:

服务端编码:

 

 1  /*自定Session*/
 2     public class MySession
 3     {
 4         private const string MSession = "MySessionId";
 5         private HttpContext context;
 6         private string sessionId;   //唯一标志这一session,最后将SessionId放进手机客户端Cookie中
 7 
 8         //出示构造方法
 9         public MySession(HttpContext context)
10         {
11             this.context = context;
12             HttpCookie cookie = context.Request.Cookies[MSession];
13             if (cookie == null)
14             {
15                 CreateSession();
16             }
17             else
18             {
19                 this.sessionId = cookie.Value;
20             }
21            
22         }
23         //建立Session 应用Cookie来储存SessionId
24         public void CreateSession()
25         {
26             Guid guid = new Guid();
27             sessionId = guid.ToString();
28             HttpCookie cookie = new HttpCookie(MSession);
29             cookie.Value = sessionId;
30             context.Response.SetCookie(cookie); 
31         }
32 
33 
34         public void SetValue(string value)
35         {
36             //Session的值是储存在网络服务器上的
37             string path = context.Server.MapPath("~/MySession" sessionId);
38             File.WriteAllText(path,value);
39         }
40 
41         public string GetValue()
42         {
43             string path = context.Server.MapPath("~/MySession" sessionId);
44             if(!File.Exists(path))
45             {
46                 return null;
47             }
48             return File.ReadAllText(path);
49         }
50     }

 

剖析:

1)每一个Session案例都用sessionid来唯一标识,为确保这一sessionid唯一性,之上事例中应用了GUID优化算法来形成

2)当手机客户端初次浏览的情况下,服务端启用CreateSession()方式,回到给这一HttpContext目标一个Cookie,Cookie的值是应用GUID形成的sessionid,这一Cookie的value就是大家自定的Session的Id了!依据必须,应用SetValue()方式,为自定Session取值(Session的value储存在网络服务器上)。

3)手机客户端再度浏览的情况下,服务端依据HttpContext“带上”回来的Cookie信息(即sessionid),开展搭配,启用GetValue()方式,获得Session的Value,即获得了手机客户端的情况信息

4)用一个通俗化的实例来表述------之前患者就医的情况下,都是会应用“病案本” ,病案本封面图写上患者的名字性別等信息,病案里面写每一次确诊的信息(用了什药,患者情况如何等),每一次患者就医的情况下,带上病案本寻找自己的主治医师。这一“病案本”就等同于Cookie。而如今许多 医院门诊引入了自身的HIS系统软件,患者就医的情况下,仅用带上自身的身份证号码,预约挂号是讲出自身的身份证号,就能在HIS系统软件中查出自身之前的就医状况,换句话说,就医信息已不纪录到病历本中由患者带上,只是纪录到医院门诊的HIS系统软件中,这一HIS系统软件就等同于Session