在a.aspx中,有如下按钮:
    //工资条打印
    protected void print_button_Click(object sender, EventArgs e)
    {
        session.add("date","2005-01-01");
        Page.RegisterStartupScript("Message", "<script   language='javascript'>window.open('b.aspx',target='_blank')</script>");
    }然后在b.aspx中,我取session["date"],但是却为null,请高手指教,急啊!!

解决方案 »

  1.   

    确定名字没错?
    修改web.cofig的session失效时间
      

  2.   

    window.open会新开进程。容易引发Session丢失问题。
    看看能不能不用Window.open
      

  3.   

    谢谢楼上,名字绝对没有错,其他页面session没有问题,这里比较特殊的就是用RegisterStartupScript在新窗口中打开,别的都一样
      

  4.   

    在服务器启用:
    ASP.NET State Service服务web.config:
    <sessionState 
                mode="StateServer"=======这里
                stateConnectionString="tcpip=127.0.0.1:42424"
                sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
                cookieless="false" 
                timeout="60" 
        />
      

  5.   

    各位,不是session失效时间的问题,我试过了,问题依旧
      

  6.   

    你可以查看一下你原来的ie窗口和用windows.open打开的窗口的cookie,如果其中的sessionid一样的话,就是session的问题,不一样的话,就是两个窗口用了不同的session
      

  7.   

    1。看看原来页面是否session也丢了
    2。看看是不是所有session都丢了
    3。如果1,2成立,估计是aspNet bug重起了,之前比较流行的是文件夹删除、修改会造成这个问题
      

  8.   

    楼上的,就这个没有,别的session都在
      

  9.   

    那要看你是怎么从a到b的,关闭浏览器session也会失效。sessionid是会话cookie.
      

  10.   

    大家可以看这句话
    Page.RegisterStartupScript("Message", "<script   language='javascript'>window.open('b.aspx',target='_blank')</script>");
    会不会引起session丢失,他就是在一个新页面中打开窗口
      

  11.   

    在链接后用b.aspx?date="2005-01-10"
      

  12.   

    你在你新 打开的页面里获取一下其他的已经存在的 Session试试。
    如果其他的也获取不到,那就应该是:window.open的问题。
      

  13.   

    在试试:
    protected void print_button_Click(object sender, EventArgs e)
        {
            session.add("date","2005-01-01");
            Response.Redirect("b.aspx");
        }
    这样直接跳转,在b.aspx里Session是否存在,如果有,那就肯定是你window.open的问题。
      

  14.   

    算了,我用参数传了,不用session了,谢谢大家