在IE里直接运行没有任何问题
可是一用VS2005调试项目,固定的几个页面死活无法访问Session对象
Session.Count()都引发 System.NullReferenceException 异常
跟踪进去 发现 根本无法访问Session,监视Session都报错Session “Session”引发了“System.ArgumentNullException”类型的异常 System.Web.SessionState.HttpSessionState {System.ArgumentNullException}大侠救命!~!!!!

解决方案 »

  1.   

    前面发过一个贴
    http://community.csdn.net/Expert/topic/4756/4756267.xml?temp=.7962
    可说的办法都不行  
    我现在的问题不是Session里的变量丢失或者失效
    而是在VS2005里调试项目 固定几个页面Session就无法访问
    但 在IE里直接运行项目  没有任何问题
      

  2.   

    估计是 Session==null 你判断下呢
      

  3.   

    肯定是  Session = null了
    但关键是 怎么会 Session=null
      

  4.   

    好象asp.net里只要发生一个异常,就会使session、application、cache内容丢失
      

  5.   

    这样说吧在页面 Page_Load()里面下断点,
    然后监视 Session(不是Session里存储的变量,就是整个Session) 
    就会提示:
    Session “Session”引发了“System.ArgumentNullException”类型的异常 System.Web.SessionState.HttpSessionState {System.ArgumentNullException}
      

  6.   

    但 用IE直接浏览项目 一点问题都没有?
    不会是VS2005的问题吧?
      

  7.   

    建议开通asp.net state service服务管理session
      

  8.   

    Session 是 SQL Server 模式
      

  9.   

    Session值已经丢失了。随意就会出现这个问题。要不你就调试服务器,把Session值永久保存。要不就在Session.Count();上面加上try  catch
      

  10.   

    使用Session时要进行判断是否为null
    虽然你存储在了数据库,看看你此时的SessionID是否重建了,可以先打印出来与数据库对比
      

  11.   

    同意孟子!
    在使用Session前,一定要加是否为NULL的判断!如果null了,还继续往下操作,就会发生LZ所说的异常!只有你要察看的Session不是null,你才能继续往下走,否则转到登陆页面重新登陆(如果有的话,或者其他的本网站的起始页面)。这一点在我的开发中体会颇深!!!
      

  12.   

    看来我的语文真的不行  :(我从头就在说 我不是访问Session[XX] 引发的异常,是访问 Session~!!!!我访问 Session 都引发空异常了 怎么按孟子老大说的访问 SessionID?而且 最邪门的就是直接用IE浏览项目没有任何问题。
      

  13.   

    在出问题的这几个页面里
    调试的时候 访问 Application时(是整个Application对象,不是Application[XX])
    也同样引发异常:
    + Application “Application”引发了“System.NullReferenceException”类型的异常 System.Web.HttpApplicationState {System.NullReferenceException}
      

  14.   

    我今天也遇到了这种情况。if (context.Session == null)
    {
          context.Trace.Warn("Session is null!");
          return string.Empty;
    }会看到Session is null!
    为什么会发生这种情况呢?
      

  15.   

    补充一下,是使用
    Substitution控件,缓存后替代的方法内发生的。一半打开页面都没问题,快速在刷新就会出现这种情况。
    Vs2005 文件系统 调试。
      

  16.   

    你那几个页面继承自Page吗?还是自己写的IHttpHandler?如果你那几个页面是自己写的IHttpHandler,没有继承IRequireSessionState接口,那么Session对你就不可用,HttpContext.Current.Session就为null,你再尝试读它下面的属性就出错。
      

  17.   

    cat_hsfz(我的新Blog在http://cathsfz.cnblogs.com)说的可能就是原因,如果确如楼主所说,是session为null. 自定义的IHttpHandler或用某些ajax框架时,由于它内部实现包括了拦截请求插入自定义IHttpHandler来处理,如果没有声明使用session,会有这个问题。
    根据session是否可写,有两个标记接口可用。
      

  18.   

    是aspx页面,代码如下using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class ReadArticle : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }    public static string AMethod(HttpContext context)
        {
            if (context.Session == null)
            {
                context.Trace.Warn("Session is null!");
                return string.Empty;
            }
            else
            {
                return "something";
            }
        }
    }
    前面是:<asp:Substitution ID="Substitution_xxx" runat="server" MethodName="AMethod" />
      

  19.   

    试不出来(Session 一直不为null),另外发现这个缓存后替换怎么没用,Substitution_xxx的值照样被缓存了,有点晕。
      

  20.   

    不会吧, 是不是你没有动态更新它的值?所以一直不变,你以为被缓存了?
    我这里还是只有第一次Session不是null,以后在访问都是null了。
    如果需要,我可以挂到网上去,给你们看。
      

  21.   

    取值之前先判断是否为null
    if(Session["aaa"]!=null)
    {
      string aa=Session["aaa"].ToString();
    }
      

  22.   

    context.Session == null
    楼主这句话是判断某个Session存在????你不判断也可以加一个try
       try
       {
            if (context.Session == null)
            {
                context.Trace.Warn("Session is null!");
                return string.Empty;
            }
            else
            {
                return "something";
            }
        }
        catch
        {
             return "something";    }
      

  23.   

    和VS没关系,我后来放IIS里也是如此。现在问题不是Session == null,是Session为什么会==null,什么情况下会。
    认真看帖子就会明白楼主和我的意思了。还是有人没看清楚,不是Session["aaa"] == null,而是Session == null。
    二者不一样。