C#基础-->cookie和session

https://www.cnblogs.com/soaeon/p/5604730.html

关于cookie和session 

       cookie

           1:一个cookie中可以存放的数据最大在4KB左右

           2:cookie存放于客户端 

           3:cookie分为两种  一种是会话cookie  一种是持久cookie 

会话cookie: 是一种临时的cookie,它记录了用户访问站点时的设置和偏好,关闭浏览器,会话cookie就被删除了

持久cookie: 存储在硬盘上,(不管浏览器退出,或者电脑重启,持久cookie都存在), 持久cookie有过期时间 

      session:      

  Session是什么呢?简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每 个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用 户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串

         1:session存放于服务器端的内存中  session池  

         2:浏览器第一次访问seesion后给其赋值 那么session池中创建一个session对象 ,同时产生一个sessionId  以set-cookie               的形式返回给浏览器 ,浏览器将session保存其进程内存中

         3:浏览器下次访问当前网站的任意页面时都会将sessionid发送给服务器 服务器在asp.net处理机制的第9个事件 和第10个事件

            9,10个事件中的步骤:

             a:判断当前页面是否有实现IRequiresSessionState接口

             b:从cookie中获取sessionid从服务器的ssesion池中找到session对象

             c:将session对象赋值给上下文的seesion属性

         4:进程内session的缺点

            a:当网站访问量过大的时候    会导致session池重启   然后session池中的session对象就会丢失了 5.0进程外session 

            a: 状态服务器(优点:速度快,缺点:也是不稳定)

            b: 数据库(优点:比较稳定,缺点:每次访问sesion 都要访问db  频繁打开和关闭ado.net 也是比较消耗性能的)   

 

关于cookie的用法

赋值:

 单个的形式:

              HttpContext.Current.Response.Cookies["Email"].Value="soaeon@163.com";

              HttpContext.Current.Response.Cookies["key"].Value="soaeon";

 以对象的形式来赋值:

 HttpCookie cookie  =new HttpCookie("tempMsg");

cookie.Values["Email"] = "soaeon@163.com";

cookie.Values["key"] = "soaeon" ;

cookie.Domain = "soaeon.com";   //设置当前cookie所属于的域

cookie.Expires = (DateTime)expiresTime   //设置cookie的过期时间(持久cookie)

System.Web.HttpContext.Current.Response.Cookies.Set(cookie);

取值:

                       System.Web.HttpContext.Current.Request.Cookies["Email"].Value;

                       System.Web.HttpContext.Current.Request.Cookies["key"].Value; 

               或者:

                      HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["tempMsg"];

                      string email = cookie.Values["Email"]; 

                      string key = cookie.Values["key"]; 

 关于session的用法

  赋值     Session["name"] = "soaeon@163.com";

  取值      if (Session["name"] != null)

          {

            string str = Session["name"].ToString();
          }

   

posted @ 2023-06-19 12:01  yinghualeihenmei  阅读(194)  评论(0编辑  收藏  举报