zoukankan      html  css  js  c++  java
  • Cookie和Session(session过程和设置进程外session)

    cookie 和  session 的区别

    cookie 是保存在客户端上的一种机制   而session 是保存在服务端的一种机制 

    cookie的理解:

     打个简单的比方,一个人生病了去A医院看病,回来的时候医生给了病人一个病历本(相当于cookie)  那么下次病人去复查的时候  就要带着这个病例本队A医院,如果拿着这个病历本去了B医院 B医院肯定是不承认的(不能够跨域取cookie,比如a.com的cookie只能由a.com, x.a.com, y.a.com等站点读取,b.com则不可以)

    cookie的保存机制分两种:  第一种是会话cookie    第二种是 持久cookie 

           会话cookie:  如果没有设置过期时间  那么cookie的生命周期就是当前浏览器的会话时间   当浏览器关闭之后 那么cookie就会失效   这种生命期为浏览会话期的cookie称之为会话cookie   

            持久cookie:    cookie对象 上加上了Expries属性之后    就会将这个cookie保存在客户端的硬盘上 在cookie为过期之前 那么再次访问这个网站的时候 会再次把cookie带过来

    设置持久cookie

        HttpCookie   cookie=new  HttpCookie(string,string);   
        cookie.Expires = DateTime.Now.AddDays(3);   
           context.response.cookies.Add(cookie);

    取出设置的cookie的值

              先判断context.request.cookies[string]!=null
              string  str=context.request.cookies[string].Value;

     session的理解

      1.0  session是存储在当前服务器的session池中 可以储存任何自定义的对象

      2.0  当浏览器第一次访问的时候 会在session池中创建一个session 对象  同时产生一个sessionid   以set-cookie的形式发送给浏览器   浏览器将其保存在当前的进程中

      

       3.0 当浏览器再次访问这个网站下的任何一个页面的时候  就会带上sessionid返回给服务器   在管道事件中的第9个和第10个事件之间进行赋值      

       判断当前页面是否有实现IRequiresSessionState 接口
                  从set-cookie 中取出sessionid  从服务器的session池中找到session对象
                  将session对象赋值给上下文的session属性
     
      4.0  考虑到服务器的session池的容量有限  当储存的sessionde 数据过多  那么回导致session池的重启 然后session池里面的老数据就会丢失 
             考虑到进程内session的问题  可以使用进程外session 来解决
     
     
     

      进程外session   

                               状态服务器(优点:速度快: 缺点不稳定)
                               数据库 (优点:可以存储大量的数据  缺点:每次访问session都要访问db   比较消耗资源)
     
     

    进程外session的设置

    使用进程外session  是因为 一般储存shession的是使用的是进程内session储存的数据有限 
      使用进程外session 的要求
      1.0 首相将session 中进行保存的对象所属的类药进行序列化[serializable]
      2.0 在计算机管理-服务-  asp.net  State  Services   进行开启服务
      3.0  在当前站点的web.config 中添加配置
       <system.web>
       <sessionState stateConnectionString="tcpip=127.0.0.1:42424" mode="StateServer"></sessionState>
      </system.web>
     
    配置完成之后 那么就可以使用进程外session了 
     
    进程外session 的优点  速度快   缺点: 只能拿个储存少量的session数据
     
    -------------------------------------------------------------------------------------------------------------------------------------------
    进程外session 之数据库
         优点:比较稳定   确定  每一次访问session的时候都要访问数据库   比较消耗性能
     
     
      使用数据库  的操作步骤
    1.0 找到aspnet_regsql.dll程序集所在的位置(C:WindowsMicrosoft.NETFrameworkv4.0.30319
    2.0   使用cmd 命令 切换到当前的文件夹之下(cd   C:WindowsMicrosoft.NETFrameworkv4.0.30319)
    3.0 输入创建数据库的cmd命令 aspnet_regsql -S . -U sa -P 123 -ssadd -sstype c -d aspnetdb
    如果  -S后面街上127.0.0.1  无法连接到SQL   server   这里可以把127.0.0.1  换成点 在尝试    -U  -P   -d  根据情况而定
     
    配置完成之后在数据库中会有两个表    还有有一个触发器和一个存储过程   
     
     
    4.0  在web.config 中使用 <sessionState</sessionState> 节点下配置
     <sessionState sqlConnectionString="server=.;database=aspnetdb;uid=sa;pwd=123;" allowCustomSqlDatabase="true" mode="SQLServer">
        </sessionState>
    节点中的  server 选择自己要链接的数据库地址     database:需要链接的数据库的名称    uid:database所在的服务器的登录名称   pwd:登陆密码   mode 数据库类型
     

     

        

  • 相关阅读:
    HTML
    JavaScript-DOM
    Visual Studio Usage
    Char 05 使用提供程序
    Char 04 运行命令
    Char 03 使用帮助系统
    char 02 初识 Powershell
    Char 01 PowerShell
    Linux Nginx
    Linux SSLH
  • 原文地址:https://www.cnblogs.com/soaeon/p/4119791.html
Copyright © 2011-2022 走看看