ASP.NET Session使用浅析
创始人
2024-04-24 01:21:16
0

在开始ASP.NET Session使用讲解之前,我们首先来看看有关ASP.NET Session的一些小的概念:

Session 的管理,我们传统的asp 程序其实是一种 dead 的Session 联结,系统其实在我们的客户端书写了一个Cookie,当我们把我们浏览器的 安全设置中的 Cookie 设置成 Prompt 的时候,当我们访问一个有Session 的页面的时候,就会出现一个是否允许Cookie 的提示,当设置成为 不允许 Cookie 的时候,我们的Session 总是不能成功.例如:

  1. ﹤%  
  2. Session("username")="豆腐" 
  3. Session("URL")="http://www.asp888.net" 
  4. %﹥ 

在ASP.NET 的环境中,ASP.NET Session使用的情况是被完全的重新进行了定义,由于豆腐现在的ASP.NET 的环境是PDC 版本的,所以,没有对Beta1 版本进行Demo,我在这里如果涉及到 Beta1 的内容,都是仅仅是材料上介绍的,没有经过豆腐的测试

其实,对于一些不愿意深究的同志们,豆腐 说:其实 ASP.NET Session使用方法和ASP Session使用的使用方法完全相同,甚至更为简单,因为 根据豆腐 的观察,我们根本不用继续 去考虑 客户端 的cookie 选项 的状态,因为不管客户端的设置如何,Session都可以顺利的传递

下面我们就对ASP.NET Session使用机制进行一些简单的深入了解,限于技术,我有的问题也不是很清楚,所以欢迎大家一同来探讨 这个 文章

在PDC 版本中,我们打开 %systemroot%\complus\(version)\config.web 文件,我们找到 Sessionstate可以看到以前的内容:

  1. ﹤Sessionstate  
  2. inproc="true" 
  3. usesqlserver="false" 
  4. cookieless="false" 
  5. timeout="20" 
  6. server="localhost" 
  7. port="42424" 
  8. /﹥ 

当 inproc 为True 的时候,ASP.NET 将采取一种称为 in-process 的机制,将Session 的数据保存在这一台服务器上,如果inproc 和usesqlserver 同时为 false ,则采取一种 out process 的机制,将Session 存储在 一台 专门用来保存Session 的服务器上,这样就可以解决当访问 一个站点的 不同主机的时候,Session 的共享,这个以前在ASP中绝对是不可能的.在 Beta1 的版本上 config.web 改变了很多,我们简单的看一下:

  1. ﹤!-- Sessionstate attributes:  
  2. mode = "inproc" | "sqlserver" | "stateserver" 
  3. cookieless = "true" | "false" 
  4. timeout = ﹤Session timeout in minutes, a whole number greater than 0﹥  
  5. sqlconnectionstring = ﹤acceptable values for SQLConnection.ConnectionString,  
  6. only used when mode="sqlserver"﹥  
  7. server = ﹤server name, only used when mode="stateserver"﹥  
  8. port = ﹤port number, only used when mode="stateserver"﹥  
  9. --﹥ 

关于 config.web 文件的Session 部分我们就先说到这里,下面我们来看看 cookieless 的问题:

这个Cookieless 不是我们平常理解的是否在 客户端 保存Cookie 根据豆腐的观察,ASP.NET的Session

是不会在 浏览器客户端生成任何的cookie的

我们首先把 cookieless 设置成为 false 的时候,我们来看看这个程序

  1. ﹤%@ Page Language="VB" %﹥  
  2. ﹤%Session("name")="豆腐"%﹥  
  3. ﹤%=Session("name")%﹥ 

程序执行结束后,我们没有从浏览器得到任何的 提示,虽然我们也使用到了Session当我们 把 cookieless 设置成为 true 以后,再次运行这个程序,我们发现 程序仍然是正确的执行,但是浏览器的地址栏发生了一些变化,我们以前是

http://host/testSession.aspx 现在变成了 http://host/(包含有很多字符串的内容)/testSession.aspx豆腐估计这是 因为 这个Session 甚至在 服务器上也没有 生成Cookie 的原因,只好用 (包含有很多字符串的内容)的内容来保存Session的内容了

当我们将inproc 和 usesqlserver 都设置成为 false 表示我们将使用 out process 这个时候,我们就要指定server 的name 这个server 就是同意保存 Session 的 服务器,我们需要在这个服务器上将asp state 的服务启动

当我们需要使用 sql server 的时候,我们必须填写 sql server的连接字符串,这样 Session 就会被保存到sql server 的一个database ,当然这个database 是要生成的,,不过在PDC版本中,我没有找到这个database 的安装文件。

ASP.NET Session使用的相关情况就向你介绍到这里,希望对你了解ASP.NET Session使用有所帮助。

【编辑推荐】

  1. 构建ASP.NET线程安全集合浅析
  2. ASP.NET线程安全与静态变量的生命周期浅谈
  3. ASP.NET中的Session会产生的性能问题浅析
  4. 关于ASP.NET Session的一点认识
  5. ASP.NET Session的七点认识

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...