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:\Windows\Microsoft.NET\Framework\v4.0.30319)
2.0   使用cmd 命令 切换到当前的文件夹之下(cd   C:\Windows\Microsoft.NET\Framework\v4.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 数据库类型
 

Cookie和Session(session过程和设置进程外session)的更多相关文章

  1. 配置进程外Session 同时解决一个奇怪的BUG 因为SQLserver 服务器名不是默认的.或者localhost而引发的一系列问题

    用公司的电脑学习如鹏网的视频,开发一个项目,用到了进程外session,因为公司电脑SQLServer 是2008 服务器名称是.  然后参考这篇文章进行设置进程外session 很顺利 完成了设置. ...

  2. 探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  3. Asp.Net进程外Session(状态服务器Session、数据库Session)

    介绍 我们知道,当浏览器关闭,或者网站重启的时候,会话就结束了.即Seesion就丢失了.(当Web.config配置文件改动,哪怕什么内容都不加,仅仅往配置文件中加一个空格都是改we.config变 ...

  4. 第四节:框架前期准备篇之进程外Session的两种配置方式

    一. 基本介绍 1. 背景:Asp.Net默认的Session机制是进程内,存储在服务器端内存中,有这么几个缺点: ①:既然存在内存中,空间有限,不能存储大数据量信息,数据量多的话Session会被挤 ...

  5. 学习笔记16_页面缓存/进程外Session

    *页面缓存:适用于访问量较高的网站 <%@OutputCache Duration="15"//缓存15秒  VaryByParam='*' //请求的任何一处发生改变,缓存 ...

  6. 第十六节:Asp.Net Core中Session的使用、扩展、进程外Session

    一. 简介 关于Session的原理可参照Asp.Net版本Session的文章,去查阅. 1. 普通用法 (1).通过Nuget引入[Microsoft.AspNetCore.Http]程序集,Co ...

  7. 进程外session

    进程外session A  SqlServer 1.管理员身份运行cmd 2.更换目录  cd c:\Windows\Microsoft.NET\Framework\v4.0.30319> 3. ...

  8. 配置进程外Session

    配置进程外Session: (1)将服务器Session信息存储在进程外           <1> 首先,开启asp.net state 服务: 控制面板 -> 程序和功能 -&g ...

  9. 进程外Session保存和全局文件错误捕获

    Session深入学习,进程外的Session 当用户登入页面跳转时候,我们会将用户登录信息保存在服务端一个键值对的Session(Session池)中.那么Session池又是在哪里呢? 它最终默认 ...

随机推荐

  1. XNA Game Studio4.0 Programming 随便读,随便记。

    一.精灵和2D图形 1.什么是2D ? 2D可以理解为 two-Dimentionanl  , 2-dimentional 的缩写. 意就是两维的,比如 数学中的 直角坐标系 所能描述的就是一个2D的 ...

  2. MySQL存储过程权限分析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://huanghualiang.blog.51cto.com/6782683/1216 ...

  3. Tengine – Nginx衍生版

    Tengine是淘宝在Nginx基础上开发的一个衍生版.官方的简介说针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验. ...

  4. linux下开发c++第二弹--helloworld与makefile

    一:hello world sudo vim hello.cpp 输入  g++ -o hello hello.cpp  获得hello 输入  ./hello 运行,显示结果hello world! ...

  5. Spring入门(1)-第一个Spring项目

    1. 创建maven项目,maven相关配置如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi= ...

  6. jquery easyui的layout

    1.创建一个布局:layout是一个容器,它有5个区域:north(北),south(南),east(东),west(西):center(中)-----------学习中文网地址 <body c ...

  7. jQuery基础学习8——层次选择器next()和prev()方法

    $('.one + div').css("background","#bbffaa"); //和next()方法是等价的,前后关系,和prev()方法是对立的 ...

  8. App启动加载广告页面思路

    需求 很多app(如淘宝.美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页.今天我们就来开发一个广告 ...

  9. ADUM1201在隔离RS232中的应用 【瓦特芯收藏】

    ADUM1201在隔离RS232中的应用 引言: RS-232是PC机与工业通信中应用最广泛的一种串行接口.RS-232接口最初是由美国EIA(电子工业联合会)规定的用于计算机与终端设备之间通讯的一种 ...

  10. UVA 11426 GCD - Extreme (II) (欧拉函数+筛法)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/O 题意是给你n,求所有gcd(i , j)的和,其中 ...