session--

来源:互联网 发布:人工智能公司估值 编辑:程序博客网 时间:2024/04/20 05:52
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");
}