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只是用户级别的全局变量。
posted @ 2007-11-24 16:59  威风剑  阅读(210)  评论(0编辑  收藏  举报