在服务器上把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;
}
}
每一个页面的判断是我在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;
}
}
if(Page.IsPostBack)
{
//代码
}
里面试试看。
再执行GlobalClass.Passport(oConnection,(string)Session["user"],"2020");
if(Page.IsPostBack)
{
//代码
}
里啊,你说的是不是把那个GlobalClass.Passport写进去啊?我那个GlobalClass.Passport是一个公共函数,我不可能在所有的页面里都写一遍吧??还是你说的是其它的意思啊
是不是实例化有问题。
OleDbConnection oConnection= new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings.Get("ConnStr"));