状况:在首页做了个用户登陆,用户输入用户名密码后点登陆按钮,在用户名密码通过一系列验证无误后,重复登陆2-3次,系统才提示登陆成功,调试发现在点登陆按钮刷新了好几次页面中,SESSION变量才取到值
原因:与2有点像,在ASP中,SESSION赋值后,刷新页面一定能收到SESSION,因此在.NET我便在page_load事件中判断Page.IsPostBack
如果当前页面为POSTBACK的时候
做身份验证
if (Session["username"] != null)
{
//登陆后用户状态图层显示
nolog.Visible = false;
islog.Visible = true;
Label1.Text = Session["username"].ToString();
}
else
{
//未登陆图层显示
nolog.Visible = true;
islog.Visible = false;
}
结果造成上述状况,究其原因的话,可能要研究.NET的SESSION延时及页面刷新机制
总之在.NET程序中,登陆后的SESSION赋值和判断不能在不同的事件中,尽管页面已经刷新
解决方法是将上述身份判断语句直接放在登陆的CLICK事件,在SESSION赋值后直接做出判断
这个是在同事小林的帮助下找到的原因,做为个女孩子,她还真是个优秀的程序员
转载于:https://www.cnblogs.com/fabnet/archive/2008/04/25/1171169.html