Session 失效
有类:
namespace Asset.BaseInfo
{
public class PageArchitecture :Page
{
public PageArchitecture()
{
}
//ADID
public string LoginUser
{
get
{
return this.Context.User.Identity.Name;
}
}
//雇员号
public string EmpNo
{
get
{
string LoginEmpno = "";
if (HttpContext.Current.Session["LoginEmpno"] == null) //保存登录者 其中loginempno是login.aspx里面登录成功时,记录的
{
HttpContext.Current.Response.Redirect("/btsl/asset/asset/Login.aspx");
}
else
{
LoginEmpno = HttpContext.Current.Session["LoginEmpno"].ToString();
}
return LoginEmpno;
}
public void SetNoCache()
{
this.Response.CacheControl = "no-cache";
this.Response.AddHeader("Pragma", "no-cache");
this.Response.Expires = -1;
}
}
public class basePage : PageArchitecture
{
protected override void OnLoad(EventArgs e)
{
this.Response.Buffer = true;
this.SetNoCache();
RegistExecScript(); // 不知是不是跟这些有关,代码是别人写的,有点看不懂,所以一并贴出来了。
RegisterForbidden();
base.OnLoad(e);
}
public void RegistExecScript()
{
StringBuilder script = new StringBuilder();
script.AppendFormat("{0}\r\n", @" <script language='javascript'> <!--");
script.AppendFormat("{0}\r\n", @" function exec(stat)");
script.AppendFormat("{0}\r\n", @" {");
script.AppendFormat("{0}\r\n", @" if(document.readyState==""readyState"" || document.readyState==""complete"")");
script.AppendFormat("{0}\r\n", @" {");
script.AppendFormat("{0}\r\n", @" setTimeout(stat,0);");
script.AppendFormat("{0}\r\n", @" clearTimeout();");
script.AppendFormat("{0}\r\n", @" }else{");
script.AppendFormat("{0}\r\n", @" setTimeout(""exec(\""""+stat+""\"")"",500);");
script.AppendFormat("{0}\r\n", @" }");
script.AppendFormat("{0}\r\n", @" }");
script.AppendFormat("{0}\r\n", @" --></script>");
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(),"exec", script.ToString());
}
public void RegisterForbidden()
{
StringBuilder script = new StringBuilder();
script.AppendFormat("{0}\r\n", @" <script language='javascript'> <!--");
script.AppendFormat("{0}\r\n", @" document.oncontextmenu=new Function(""return true;"");");
script.AppendFormat("{0}\r\n", @" document.onkeydown=new Function(""if(event.keyCode==8){return true;} if(event.keyCode==78 && event.ctrlKey){return false;} if( (event.keyCode==37 || event.keyCode==39) && event.altKey){return false;}return true;"");");
script.AppendFormat("{0}\r\n", @" --></script>");
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(),"forbidden", script.ToString());
}
}
}
页面B0001 .cs
public partial class B0001 : basePage
{
...
取登录者的时候就用:
string loginempno=Empno;
现经常取不到Empno,有时候过不了两分钟就要求重新登录。。。
}
另 webconfig内:
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="true" timeout="180" />
以上就是主要代码,由于是别人写的有点看不明白所以一并贴上。
现问题是:Session失效不对,设置的3个小时,但有时就几分钟要求用户重新登录。