教程集 www.jiaochengji.com
教程集 >  脚本编程  >  Asp.net  >  正文 ASP.NET的Session使用浅析

ASP.NET的Session使用浅析

发布时间:2015-09-24   编辑:jiaochengji.com
ASP.NET的Session使用浅析

本文介绍ASP.NET SESSION使用的相关事项。

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

<%  Session("username")="豆腐" Session("URL")="http://www.jiaochengji.com" %> 在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可以看到以前的内容:

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

<!-- Sessionstate attributes:  mode = "inproc" | "sqlserver" | "stateserver" cookieless = "true" | "false" timeout = <Session timeout in minutes, a whole number greater than 0>  sqlconnectionstring = <acceptable values for SQLConnection.ConnectionString,  only used when mode="sqlserver">  server = <server name, only used when mode="stateserver">  port = <port number, only used when mode="stateserver">  --> 关于 config.web 文件的Session 部分我们就先说到这里,下面我们来看看 cookieless 的问题:

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

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

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

<%@ Page Language="VB" %>  <%Session("name")="豆腐"%>  <%=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。

您可能感兴趣的文章:
ASP.NET的Session使用浅析
asp与asp.net的session共享
php session跨域跨服务器的解决方法分享
asp.net session必须了解的七点常识
asp.net中session用法疑问
asp.net Session丢失的解决方法
浅析php中session和cookie的区别和联系
PHP session并发及session读写锁分析
解决php session跨页面传递 session值丢失的问题(图文)
asp.net session实现用户登录的疑问

[关闭]
~ ~