我用的是.net 2003
有两个页面
登陆页面A,登陆之后进入的页面B
我的登陆验证是用session做的我在B里面放有一个退出按钮,当点击该按钮的时候
session.removeall()
session.abandon()
然后redirect到A这些登陆验证跳转都没问题,问题是,我进行以下步骤:
1。通过登陆界面A,验证成功进入页面B
2。在B中点击退出按钮,退回到登陆页面A
3。浏览器不关,我在这个时候直接输入页面B的地址,它居然可以直接进入页面B
      注意,我如果不先进入过页面B,比如说我第一次就直接输入页面B的地址,是不能进去的,这个没问题
  关键是:在我上面所说的3个步骤,在第三步中,我直接输入页面B的地址,它居然不触发B页面的page_onLoad函数,也就是说,系统是类似于直接读一个缓存那样把我的页面装载近来的,只因为我之前登陆成功过,所以根本不触发任何事件请问,我怎么避免这种情况?我希望在第三步中,直接输入页面地址B的时候,系统也能老老实实的执行我的page_onload函数。是不是我需要在页面B的退出触发事件的时候,把一个什么缓存清空?如果是,请教一下怎么做

解决方案 »

  1.   

    清空IE缓存
    IE--工具--Internet选项--常规 -- Internet临时文件 --> 删除文件
      

  2.   

    使用Session验证会经常发生问题,请楼主试用Forms验证,可以看看这个连接地址,讲得很清楚:http://community.csdn.net/Expert/topic/4720/4720051.xml?temp=.5512812
      

  3.   

    把对应控件 的VIEWSTAT关闭
      

  4.   

    使用Forms验证会安全很多,机制好
      

  5.   

    我晕倒阿,我可是想了很久才决定了用SESSION的阿,我们只说SESSION的问题,如上,希望大家帮忙解决一下,不提Forms验证
      

  6.   

    B.ASPX
    ... Page_Load()
    {
      Response.Expires = -1;
    }
      

  7.   

    哈哈,刚才也不能怪我,你没说清嘛
    再试试这个
    <Meta http-equiv="Pragma" Content="No-cach">
      

  8.   

    我在B里面放有一个退出按钮,当点击该按钮的时候
    if (Session("islogin") == true)
       Session("islogin") = false;
      

  9.   

    你的问题很可能是window.open('xxx.aspx','_self','')
    你在转页面的时候是不是用了上面的语句
     如果是的话 改成window.location='xxx.aspx'
      

  10.   

    hdt(倦怠),你简直就是TMD一天才,哈哈,你的解决方法完全great ,各位,我只是想知道怎么清空这个缓存阿,hdt(倦怠)说得对,把页面的缓存时间搞为负就行了萨。兄弟们,揭帖阿,期望伴随着失望,失望孕育着期望,下次见!