我的用户登入是用session保存的,当我退出时做了session清空操作FormsAuthentication.SignOut();
                Session.Clear();
                Session.Abandon();
                Response.Clear();
                //清空缓存 
                Response.Buffer = true;
                Response.ExpiresAbsolute = System.DateTime.Now.AddDays(-1);
                Response.Expires = 0;
                Response.CacheControl = "no-cache";
                Response.AddHeader("pragma", "no=cache");问题:当我退出后,直接输入文件地址,session值依然存在。
后来我调试,发现问题所在,session值是已经清空,直接输入文件地址能进去。(因为没有删除游览器历史记录)
但是为什么删除游览器历史记录才就可以起到判断作用?如何在清空缓存或者清空session的时候用程序清空游览器历史记录
我的判断代码  if (!IsPostBack)
        {
            if (Session["user"] == null)
            {
                Response.Redirect("../index.aspx");
            }

解决方案 »

  1.   

    Session.Clear();
    是清楚。
    你用该移除。
      

  2.   

    问题不是session值是否清空。是session值我确定已经清空,但为什么需要删除游览器历史记录,才能启到我页面session判断
      

  3.   

    直接输入文件地址能进去
    再输入一次看看。不用IsPostBack什么的。
    加一句试试:Session.Clear();
    Session.Abandon();
    Response.Clear();
    //...
    Response.Write("<script src=_blank.aspx ></script>");
      

  4.   

    原来页面有缓存,跟你在删除Session时删除缓存没有关系。
      

  5.   

    按道理说,不应该是缓存的问题
    除非是用的html控件+ajax请求
      

  6.   

    可是我调试,确实是这样的问题
    我调试,发现问题所在,session值是已经清空,直接输入文件地址能进去。(因为没有删除游览器历史记录)
      

  7.   

    页面<head />之间添加
    <meta content="no-cache" />
    <meta http-equiv="Cache-Control" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    试试看!
      

  8.   

    不可能呀 ,LZ是怎么测试的, 你清空session后 调试并没结束,也就是说该调用还没断开连接,session保存在服务器端,和客户端已经断开连接,但他并没消失但你做 Session["user"] == null 这个判断时,应该就是null呀
      

  9.   


     if (Session["user"] == null)
                {
                    Response.Redirect("../index.aspx");
                }
    if (!IsPostBack)
            {
    }把判断放到IsPostBack的外面