session

本文介绍了ASP.NET中的Session对象及其用途,包括如何定义用户级别的全局变量、Session的生命周期管理及常见应用场景,如用户登录验证和权限控制。
session对象用于定义用户层次的全局变量,asp.net中session可以不需要依靠cookie
session有两个事件,onstart和onend分别在启动和结束会话时触发。在global.asax
中有这两个过程的定义,你可以在这里加入你自己要实现的代码。

当你申请一个页面时,就建立了session会话。比如当你打开www.blueidea.com就
和服务器建立了一个session会话,在你的会话还没有结束前,你的session变量可以
被你全局享用,不同的会话之间session变量是互不干扰的。

至于有什么作用,显而易见。当你首先建立session会话的时候如果定义了一个变量
这样可以定义和给session变量赋值:session("your_variable")="value";那么在你通过页
面上的链接转到其他页面上的时候,只要你的会话没有结束,你就可以存取这个变量值。
楼主提到的在登陆系统中,当你登陆成功的时候,可以把用户信息存在session变量里,
然后在其他页面,比如需要修改自身信息的页面的时候就可以利用这些变量,如果没有登陆那么就没有session变量值,就可以在登陆以后要显示的页面里做相应的判断。
最常用的用法就是如果A用户登陆就显示一个“管理”的连接,因为他有这个权限,
如果B用户登陆就不显示,因为他没这个权限,大致代码(夹在html中要显示的位置):
<% if session("useid")="A"then %>
        <a href="admin_addmanager.aspx" target="main">人员管理</a>
<%end if%>

session会话默认时间是20分钟,超过就会放弃会话,你而已在web.config中修改:
<sessionState
  mode="InProc"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
  cookieless="false"
  timeout="20"
/>
其中timeout就是会话最大时间,单位是分钟.默认情况下web.config里面就是这种设置,
其中cookieless="false"表示可以不依靠cookie,这使得有些禁掉了cookie的用户也可以
使用session。
mode="inproc"表示把不同用户的session信息存在服务器的IIS进程中,不同用户和服务器
建立连接的时候会有不同的sessionid以至服务器能分辨哪个session变量是属于哪个用户
的。你也可以把session存放在其他位置,别的方法具体怎么用我也不是很清楚,反正我
都是用inproc属性,因为这样速度最快,如果存在SQL SERVER中存取速度肯定受影响。

application对象才是所有用户都享用的真正的全站全局变量,而session只是用户级别的全局变量。

转载于:https://www.cnblogs.com/weck0736/archive/2007/11/24/971194.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值