在服务器上把Web程序发布 ,然后在其它机器上通过IE来访问,在服务器端我随便浏览一个页面后,然后搁置好长时间都不对这个页面操作,等再去操作的时候,仍能够对这个页面进行操作,可是在那些非服务器端的机器上,很有可能我刚登陆进去,对某一个页面进行了不到2秒钟的操作,就提示“您在该页面停留太久或该页面已过期,请重新登陆”的页面。
    每一个页面的判断是我在PageLoad中写的语句,如下:
private void Page_Load(object sender, System.EventArgs e)
{
int flag = GlobalClass.Passport(oConnection,(string)Session["user"],"2020");
switch(flag)
{
case 0:
Response.Write("您没有权限访问该页面,如果您需要访问该页面,请联系系统管理员授予您访问此页面的权限");
Response.End();
break;
case 1:
// Response.Write("您没有权限访问该页面,如果您需要访问该页面,请联系系统管理员授予您访问此页面的权限");
// Response.End();
break;
case 2:
break;
default:
Response.Write("您在该页面停留太久或该页面已过期,请重新登陆");
Response.End();
break;
}
其中的GlobalClass.Passport函数如下,主要作用是获取用户的权限是:2(管理员),0(普通用户),1(什么都不做) public static int Passport(System.Data.OleDb.OleDbConnection oConnection,string userid,string purviewID)
{
if(userid == null)
return -1;
string QXsql="SELECT a.Xt0401 角色编号, a.Xt0402 权限编号, a.Xt0403 权限值,b.Xt0302 权限名称, c.Xt0202 角色名称 FROM xt002 c INNER JOIN      xt004 a ON c.Xt0201 = a.Xt0401 INNER JOIN      xt003 b ON a.Xt0402 = b.Xt0301 INNER JOIN      xt001 d ON c.Xt0201 = d.Xt0104 WHERE (d.Xt0101 = '"+userid+"' and a.Xt0402 = '"+purviewID+"')"; oConnection.Open();
System.Data.OleDb.OleDbCommand oCmd = new System.Data.OleDb.OleDbCommand(QXsql,oConnection);
System.Data.OleDb.OleDbDataAdapter Da = new OleDbDataAdapter(oCmd);
System.Data.DataSet Ds = new DataSet() ;
Da.Fill(Ds);
oConnection.Close(); if(Ds.Tables[0].Rows.Count >0)
{
int result;
result = int.Parse(Ds.Tables[0].Rows[0]["权限值"].ToString());
return result;
}
else
{
return 0;
}
}

解决方案 »

  1.   

    有人说是Session、或者Cookies的问题,可是我把WebConfig中的SessionSate中的TimeOut设为了200(默认值是20),仍然没有效果,大家救小妹一命啊!!!!
      

  2.   

    把代码写在
    if(Page.IsPostBack)
    {
       //代码
    }
    里面试试看。
      

  3.   

    先判断Session
    再执行GlobalClass.Passport(oConnection,(string)Session["user"],"2020");
      

  4.   

    to 很有可能我刚登陆进去,对某一个页面进行了不到2秒钟的操作,就提示“您在该页面停留太久或该页面已过期,请重新登陆”的页面。你怎么存数据到session
      

  5.   

    To caizhenfang(边缘人):代码本来就在
    if(Page.IsPostBack)
    {
       //代码
    }
    里啊,你说的是不是把那个GlobalClass.Passport写进去啊?我那个GlobalClass.Passport是一个公共函数,我不可能在所有的页面里都写一遍吧??还是你说的是其它的意思啊
      

  6.   

    To caizhenfang(边缘人):呵呵,看错了,没有在里面,我试试看,多谢,
      

  7.   

    TO driftingxyu:你说的先判断Session,判断Session的什么啊??
      

  8.   

    oConnection在什么时候定义的。
    是不是实例化有问题。
      

  9.   

    To dutguoyi:oConnection是定义了一个外部的变量,整个页面所有的连接都用这一个oConnection,
    OleDbConnection oConnection= new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings.Get("ConnStr"));