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");
}