前台: 
<%if (Session["loginState"] == null)
                  { %>
                <div class="dblink">
                    a<b></b><a href="login.aspx" target="_search">请登录</a><b></b><a href="reg.htm" class="mfzc" target="_search">免费注册</a>
                </div>
                <%} else{ %>
                <div class="dblink">
                    <label runat="server" id="showName"></label>a<b></b><a href="#" onclick="exitsc();">[退出]</a>
                </div>
                <%} %> <script type="text/javascript">
                           function exitsc() { 
                              <%clearSession();%>
                               location.reload();
                            }    
                    </script>后台:    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["userName"] == null)
            {
                
            }
            else
            {
                showName.InnerText = Session["userName"].ToString();
            }
        }
    }
    public void clearSession()
    {
        Session["userid"] = null;
        Session["userName"] = null;
        Session["loginState"] = null;
    }

解决方案 »

  1.   

    你不是执行 了
    <%clearSession();%>
    都清空了啊
      

  2.   

    服务器端的代码先执行的,你把
    <%clearSession();%>
    写在脚本里面没用,仍然是先执行clearSession();后才输出html的
      

  3.   

      if (!IsPostBack)
    { 当不刷新的时候,才能执行if里面的语句,刷新了就不能执行了
      

  4.   

    ASPX页面是继承了cs页面所以代码是从cs页面开始执行。。当你执行到aspx页面的时候,调用了js里面清空session的方法,所以就会产生你一刷新session为null的情况
      

  5.   

    混用了      asp和asp.net            杯具了