天天看点

session基本知识(.net)

1、session有效时间是多长?怎样设置session的有效时间?怎样使所有的session失效?

您可以在web.config中设置session过期时间  

默认为20分钟。  

<sessionState  

            mode="InProc"  

            stateConnectionString="tcpip=127.0.0.1:42424"  

            sqlConnectionString="data   source=127.0.0.1;user   id=sa;password="  

            cookieless="false"  

            timeout="20"   />  

            ~~~~~~~~~~~~  

            时间设置

也可以在代码中设置:Session.Timeout

Session.Abandon();   //session失效

session.abandon()方法并不立即结束用户会话,而是等到当前页面完成处理。调用Abandon()之后,仍然可以从会话状态获取条目。例如:以下语句显示Hello!两次  

Session["myItem"]="Hello!";  

Response.Write((string)Session["myItem"]);  

Session.Abandon();  

Response.Write((string)Session["myItem"]);  

但是,当用户发出新的页面请求时,条目将从内存中消失。  

2 =======================

Session[会话对象]是System.Web.UI.HttpSessionState类的实例,以名称/值的方式进行访问  

--------------------------------------------------------------------------------  

当一个用户进入站点之后就产生了一个session会话,它是一个编码的ID形式存在的,你可以设置一个标识来识别它,比如:Session["name"],然后赋给Session["name"]以一个单一值  

比如我们通常用的用户名了:Session["name"]="sql_fly   (微软)   "取值的时候是  

string   strUserName   =   Session["name"].ToString(),Session的生命周期是看你在webconfig的SessionState里面的timeout所设的时间[以分钟为单位],如果超过这个时间那么这个Session对象就会被清空掉了,就是所谓的Session超时了,就算用户关掉所有的窗口,或是掉线,断电等情况,只要Session没有达到超时的时间限制的话,那么除非进行手工清除,不然他就一直存在。  

3首先需要对所有的session访问做一个包装类,不能直接访问。你可以实现一个叫SessionManager的类里面有类似下面的方法:

public object CurrentSession(){

try{

if(HttpContext.Current.Session != null){

return HttpContext.Current.Session

}

else{

HttpContext.Current.Response.Redirect("login.aspx");

}

return null;

}

catch(System.Threading.ThreadAbortException) {

// do nothing

}

}

所有的session都从这个函数中获得。

4这都能行?

protected void Session_End(Object sender, EventArgs e)

{

Response.Write("<script>alert('由于长时间没有操作,请重新登录');</script>");

Response.Redirect("./UserManger/login.aspx");

}