在程序中用session来保存一个变量,用switch来判断变量的值然后做相应的处理,简单代码举例如下:
                     switch (Session["bnt2"].ToString())
{
case "bntNon":
codeText.ReadOnly=false;                    Session["bnt2"]="bntAdd";
break;
case "bntAdd":                                         codeText.ReadOnly=true;                                     Session["bnt2"] = "bntAdd";
                                         break;
}
在asp.net 2.0的运行环境下完全正常,但是通过iis去浏览的话有时候会报错说switch (Session["bnt2"].ToString())对象没有初始化,但是有时候又是正常的。因为程序要求要可以同时打开多个窗口并且要控制窗口的位置和其它一些属性我在页面用window.open()去打开窗口,在网上有查到window.open()会导致session变量丢失所以我采取了传递参数的方法,但是还是不行,所以请求各位高手帮忙!!!!

解决方案 »

  1.   

    出现没有初始化的时候是不是session里面没有值啊,比如没有登陆,直接调试的某一个页面?
      

  2.   

    switch (Session["bnt2"].ToString())对象没有初始化
    ===================================================
    这多是因为SESSION对象不存在引起的,仔细检查你的程序,看是否有没对SESSION副职就调用的地方,或者加一个判断
    if (Session["bnt2"] != null)
    {
      ... ...
    }
      

  3.   

    基本的数据验证问题啊。Session是null 你怎么ToString()操作阿。当然要出错了。所有的地方保护一下。
      

  4.   

    protected void Session_Start(Object sender, EventArgs e)
    {
    Session["bnt2"] = null;//可在這裡先進行初使化
    }
      

  5.   

    感谢各位的回复啊,但是我在page_load里就初始化了session["bnt2"]="bntNon",所以不可能出现它没有值,我也在按牛事件里面判断了if (Session["bnt2"] != null),但是还是出现同样的问题,
      

  6.   

    这样的绑定通过通过URL传递好些呀,用Session有些浪费资源.
    建议用URL传递
    例如:
    http://index.aspx? action = add
      

  7.   

    在这种情况下,用ViewState更方便啊。
      

  8.   

    jinzhouke,请问可以说的更加详细点吗?
      

  9.   

    ViewState[]用法和Session[]一样,不过他只在本页面内有效
      

  10.   

    用ViewState[]吧!你的代码放在哪个事件里,不要放在页面的构造函数里,因为那时候Session对你
    还没有生成。
      

  11.   

    Session["bnt2"]这个东西没有,0.tostring当然出错了
      

  12.   

    把出错页面的trace信息输出打开,一看就知道有没有session,:)
      

  13.   

    但是通过iis去浏览的话有时候会报错说switch (Session["bnt2"].ToString())对象没有初始化
    ------------------------
    单独打开文件的时候,Session没有初始化,当然有问题了.
    string strSession = Session["bnt2"] != null ? Session["bnt2"].ToString():string.Empty;
    switch(strSession)....
    这样Session未初始化的化会初始为空值.------------------------
    传递参数的方法,但是还是不行
    ------------
    应该不会的,我一般用showModalDialog/showModelessDialog打开窗口.本页中传值用ViewState["名称"]好一些.大概使用方法和Session差不多.不初始化也要出错的.
    最后的办法是设置断点跟踪,看看为什么Session为null.
    另外补充点:session["bnt2"]="bntNon"是区别大小写的,包括里面的名字也一样.
      

  14.   

    Session是Null还是“空”是不一样的,Nll说明根本没有Session这个东西,“空”是只有Session,但是值为空!前者会导致你说的那种情况。
      

  15.   

    单步跟踪,确认page_load里初始化了session["bnt2"]="bntNon"
      

  16.   

    无故丢SESSION的话,是你服务器的问题.把你的虚拟目录内存限制去掉就可以了.我也遇到过..
      

  17.   

    如果你的Session不存在的话,你怎么去判断它是否为null呢,所以要先看看是否存在没有出现Session的情况