用VS.Net打开站点,在Debug模式调试下。登陆完后,在主页面连接到其他页面时,动不动就说session为null了。可是如果直接用浏览器打开站点的时候就不会,怎么刷新,跳转页面都不会错(没有提示session为null)。
---------------------
节选部分代码如下:Class UserData:
  [System.ComponentModel.DesignerCategory("Code")]
  [SerializableAttribute] 
  public class UserData : DataSet
  { .... }Class PageBase:
  public UserData SessionUser
{
get { 
return (UserData)Session["SESSION_USER"]; 
}
set { 
Session["SESSION_USER"] = value; 
}
}Check Session in other pages:
private void Page_Load(object sender, System.EventArgs e)
{ if (this.SessionUser == null) Response.Redirect("Login.aspx", true); }不知道大家有没有碰到过类似的问题,以前我也没有碰到过。
郁闷的问题使我基本上不能Debug程序了。

解决方案 »

  1.   

    重新编译后session自动失效。调试的最好办法是在VS.NET编程同时要打开浏览器访问网站运行
    每次编译时浏览器不关,编译完接着测试。
    用VS.NET的运行速度很慢
      

  2.   

    对,如果调试模式下每编译一次session就会丢
      

  3.   

    编译完之后,session自然会丢失。
    在单元调试时,最好在页面前加入Session["loginid"]=2,在必要时把这些注释掉就好了。
      

  4.   

    "重新编译后session自动失效。"
    ----------
    这个我知道。但是我使在Debug状态下调试的时候,也就是编译、运行后,在页面上进行操作。可是在这个期间没有再次编译的了呀。而且丢失的问题也很奇怪,页面A有时可以打开(Session没有丢失),有时候又不能打开(Session丢失了)。有随机性的。
      

  5.   

    session丢失的页面是不是用模式对话框打开的页面的?
    如果是模式对话框打开的话确实存在你说的问题
    这其实是微软的一个bug,模式对话框下系统只识别第一个加入内存的ie进程,由于session是跟ie进程绑定的,所以就出现这样的问题了你可以试试下面的方法来解决:
    准备调试的时候关掉所有的ie窗口,保证调试时.net开启的ie进程是第一个假如内存的
    这样基本可以解决调试时候session丢失的问题了
      

  6.   

    不是用模式窗口打开的,也尝试了关闭所有IE窗口来进行调试,情况还是一样。
    ________
    整个网站使用上下框架搭建的。上面frame是菜单栏,点击菜单项时,下面frame显示不同的页面(有时候Session丢失,有时候没有)。
      

  7.   

    debug调试重新编译session会消失的