一。定义
session 对象用于存储用户的信息。对于一个应用程序中的所有页面都可以共用。(客户端禁用COOKIE,session也不能使用!)
二。session的属性和方法
属性 | 功能说明 |
SessionID | 返回用户的会话标识。 在创建会话时,服务器会为每一个会话生成一个单独的标识。会话标识以长整形数据类型返回。在很多情况下 SessionID 可以用于 WEB 页面注册统计。 |
TimeOut | 以分钟为单位为该应用程序的Session对象指定超时时限。 如果用户在该超时时限之内不刷新或请求网页,则该会话将终止。 |
方法 | 功能说明 |
Abandon | 删除所有存储在 Session 对象中的对象并释放这些对象的源。 |
事件 | 功能说明 |
Session_OnStart | 该事件在服务器创建新会话时发生。 |
Session_OnEnd | 该事件在会话被放弃或超时发生。 |
三。session 与 cookies的比较
Session | Cookies | ||
相似点 | 功能 | 存储或跟踪用户数据 | |
不同点 | 存储位置 | 服务端 | 客户端 |
建立方式 | 默认为每次访问网页就自动建立 | 通过代码建立 | |
安全性 | 高 | 低 |
四。创建一个session对象
Session["UserName"]="admin";
五。获取一个session对象的值
string UserName=Session["UserName"].ToString();
六 session 过期时间的四种设置方法
1、操作系统:Widnows Server 2003
步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在这儿设置你要的超时时间,单位分钟)。确定即可。
2、ASP.NET应用程序中Session过期时间的设置
在ASP.NET这样的Web应用中,Session是用来保存用户状态的常用手段,不过由于服务器内存空间是有限的,所以Session过期时间设置是很有必要的。在ASP.NET中如何设置Session的过期时间呢,很简单,修改web.config配置。
具体修改方法如下,在web.config中进行如下配置
<system.web>
<sessionState mode="InProc" timeout="30"/>
</system.web>
在这里指的是Session过期时间为30分钟。也就是说30分钟后如果当前用户没有操作,那么Session就会自动过期了。
3、在调用Session的cs页中,Load事件里面写以下
Session.Timeout = 30;
4、Store session in asp.net state service
<sessionState cookieless="false" timeout="480" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" />
七。 HttpContext.Current.session 与 page.session的区别
HttpContext.Current.Session 通常用在单独的类里 ;Page.Session一般是页面的后置类里用.
使用 System.Web.HttpContext.Current.Session 访问当前Web 应用程序的Session。通常我们是使用 Page.Session(在网页的后台代码中)或 context.Session(来访问当前Web应用程序的 Session。但是在类库中,我们无法获取 Page 变量或 context 变量,这时我们就可以使用System.Web.HttpContext.Current.Session 访问当前Web 应用程序的Session .
两者是相等的,只是访问形式不一样。
八。如果写在类库里,需要这样写,(写在构造方法里,需要重写方法。因为构造函数执行在asp.net页面所有的生命周期之前)
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (System.Web.HttpContext.Current.Session["Islogin"] == null)
{
HttpContext.Current.Response.Write("session Is Null");
}
else
{
HttpContext.Current.Response.Write("session Is NotNull");
}
}