一、理解Session机制:
Session是一种用于服务器端状态管理的机制,服务器使用一种键值对的结构来保存信息。当程序需要为某个客户端的请求创建一个Session的时候,服务器首先检查这个客户端的请求里是否已包含了一个Session标识 - 称为 Session id,如果已包含一个Session id则说明以前已经为此客户端创建过Session,服务器就按照Session id把这个 Session检索出来使用。在ASP.NET中,默认情况下这个Session id会存储在客户端浏览器的cookie 中,默认情况下如果不对Session做任何写操作的话,客户端是不存储这个Session id的,可以通过在页面拖一个button,不要对Session做任何写操作,然后在Click事件中打印Session.SessionID,当单击button时每次SessionID都是不同的。
 protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write(Session.SessionID);
    }

这说明服务器端的Session id都是重新创建的。
Session id的存储方式有以下四种
1、AutoDetect
Web.config做相应的配置如下:
<system.web>
    <sessionState  cookieless="AutoDetect">
    </sessionState>
</system.web>
ASP.NET 确定请求浏览器或请求设备是否支持 Cookie。如果请求浏览器或请求设备支持 Cookie,则 AutoDetect 使用 Cookie 来保留用户数据;否则,将在查询字符串中使用一个标识符。如果浏览器或设备支持 Cookie,但当前禁用了 Cookie,则请求功能仍会使用 Cookie(也就是禁止不了Session所用的Cookie,这一点我有点疑惑,我禁止掉ie的Cookie,但仍然可以使用Session)。
 
2、UseCookies
Web.config做相应的配置如下:
<system.web>
    <sessionState  cookieless="UseCookies">
    </sessionState>
</system.web>
 无论浏览器或设备是否支持 Cookie,都使用 Cookie 来保留用户数据。
 
3、UseDeviceProfile
Web.config做相应的配置如下:
<system.web>
    <sessionState  cookieless="UseDeviceProfile">
    </sessionState>
</system.web>
 ASP.NET 根据 HttpBrowserCapabilities 设置来确定是否使用 Cookie。如果 HttpBrowserCapabilities 设置指示浏览器或设备支持 Cookie,将使用 Cookie;否则,将在查询字符串中使用一个标识符。
 
4、UseUri
Web.config做相应的配置如下:
<system.web>
    <sessionState  cookieless="UseUri">
    </sessionState>
</system.web>
无论浏览器或设备是否支持 Cookie,调用功能都使用查询字符串来存储标识符。这时候ASP.NET会将Session id存放在地址栏中,当访问某个写了Session的页面时,地址栏会变成:
http://localhost:1237/WebSite6/(S(vyn3bk55h4a03w455vjiwj21))/default4.aspx
这时候你可以去打印Session id,你会发现Session id=vyn3bk55h4a03w455vjiwj21。

二、ASP.NET中Session的存储模式有以下五种:
1、Custom
 会话状态将使用自定义数据存储区来存储会话状态信息。
 
2、InProc
 会话处于正在处理 ASP.NET 辅助进程的状态。
 
3、Off
 会话状态被禁用。
 
4、SQLServer
 会话状态将使用进程外 SQL Server 数据库来存储状态信息。
 
5、StateServer
 会话状态将使用进程外 ASP.NET 状态服务来存储状态信息

Cookies和Session(二)相关推荐

  1. cookies和session

    基于cookies做用户验证时,敏感信息不适合放在cookies中 cookies保存在客户浏览器端的键值对 session保存在服务器端的键值对(依赖于cookies),把用户浏览器中的cookie ...

  2. Python的cookies与session

    一. 渊源 当我们浏览一个网页,比如逛淘宝,我们在上面进行了登录,然后看上了心仪的东西并加入了购物车.临时有事,把电脑关掉了,第二天再重新打开这个界面的时候,我们发现并没有进行登录操作,就已经登陆上去 ...

  3. Python爬虫笔记——post请求、cookies及session

    一.post请求 post和get都可以带着参数请求,不过get请求的参数会在url上显示出来,但post请求的参数就不会直接显示,而是隐藏起来.像账号密码这种私密的信息,就应该用post的请求.如果 ...

  4. 【Django】Django中cookies、session和token实现demo

    一.cookies和session HTTP是一种无状态的协议,客户端向服务端发起请求,在通过用户名和密码进行用户认证后,HTTP协议不会记录认证状态,所以用户在下次请求时还是需要再次认证.为了能够保 ...

  5. 浅析http协议、cookies和session机制、浏览器缓存

    浅析http协议.cookies和session机制.浏览器缓存http://blog.csdn.net/coslay/article/details/41674799 最近几天在复习http协议中h ...

  6. PHP相关系列 - 浅析http协议、cookies和session机制、浏览器缓存 .

    作者:   benwin 来源:http://www.phpben.com/?post=77 最近几天在复习http协议中headers,cookies.session.缓存等相关知识,发现些新知识点 ...

  7. django关闭浏览器,怎样清除 cookies 和 session

    django关闭浏览器,怎样清除 cookies 和 session 设 置 Cookie: def cookie_set(): response = HttpResponse(" 设置 C ...

  8. cookies和session区别

    cookies和session区别 1.Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端. 2.Cookie有大小限制以及浏览器在存cookie的个 ...

  9. Frameset导致Cookies和Session丢失的原因及解决办法

    参考资料 1 Frameset导致Cookies和Session丢失的原因及解决办法 http://blog.csdn.net/zl_c/article/details/1742775  2 使用fr ...

  10. Cookies 、 Session 和 token 的区别

    这篇文章写的 Cookies 和 Session的区别 比较详细,也很好理解,可以学习下:https://blog.csdn.net/axin66ok/article/details/6175522 ...

最新文章

  1. c语言实验七实验报告,C语言实验七 数 实验报告.doc
  2. dataset__getitem___一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
  3. 设置全屏_教你在直播中如何显示全屏弹幕,增加与粉丝的互动
  4. 第二阶段 工作总结 05
  5. “内”忧“外”患,3 万台 Mac 有危险!
  6. 计算机科学与技术的应用图,安徽农业大学计算机科学与技术视图及其应用.ppt...
  7. 大工17春计算机文化基础在线测试3,大工17春《计算机文化基础》在线测试3满分答案...
  8. httpd 安装详解(待更新)
  9. swift -inout关键字
  10. 大数据Hadoop相关概念及其技术生态圈
  11. Ricequant 平台入门--第一个量化交易策略
  12. 【Qt编程】基于Qt的词典开发系列二--本地词典的设计
  13. cdr圆形渐变填充怎么设置_适用于平面设计的软件cdr!
  14. Syzmlw 蜗居大结局f
  15. 冷山的博客思听书摘索引页
  16. 车载、行车记录仪产品知识汇集
  17. 某某读书搜索__DATA__分析
  18. Ubuntu Kylin V10安装python3.10.4
  19. rk3288 android 6.0固件,[RK3288][Android6.0] 使用SD卡升级固件到eMMC
  20. 已知IP地址,如何计算其子网掩码,默认网关地址,网络地址等。

热门文章

  1. linux启动过程中内核拷贝,轻松识破linux内核启动过程中的“”套路“”
  2. mysql字段是否存在_mysql判断列是否存在
  3. Java HashMap与Hashtable数据结构和特点+HashSet简述
  4. c语言中const对于define优点,为什么大多数C开发人员使用define而不是const?
  5. java 按钮 监听_Button的四种监听方式
  6. 农林资金 大数据审计案例_大数据审计:现状与发展
  7. 2.3单链表的基本使用及其cpp示例
  8. php 5.6 引用传递,升级到5.6.x后如何在php中修复引用传递
  9. datatype未定义是什么意思_TypeError:无法读取未定义的属性'then'
  10. Python二级笔记(15)