最近小弟子学习asp.net编程,可是前天系统重装后以前用VS编写的部分项目访问总是出错,不知是什么缘故有的提示“未将对象引用设置到对象的实例”,还有一些其他错误!
完整错误信息如下:/*************************************************************
未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 20:  {
行 21:  // 在此处放置用户代码以初始化页面
行 22:  if(Session["logon"].ToString()!="logonSuccess")
行 23:  {
行 24:  Response.Redirect("WebForm1.aspx");
 源文件: d:\wwwroot\cs\3.4\index.aspx.cs    行: 22 堆栈跟踪: 
[NullReferenceException: 未将对象引用设置到对象的实例。]
   _3._4.index.Page_Load(Object sender, EventArgs e) in d:\wwwroot\cs\3.4\index.aspx.cs:22
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731 
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573 /****************************************************************************************
星号之间为完整错误信息,希望各位高手指导,谢谢!!

解决方案 »

  1.   

    似乎是你的Session为空了你添加一个判断,先判断Seesion是不是为Nothing(VB.NET的方法,c#的不晓得)
      

  2.   

    Session丢了……
    if ( Session["logon"] == null )
       //提示Session已超时,请重新登录。
      

  3.   

    楼上。正解
    Session丢了……
    如果你用的session很多,就不必像楼上每个都判断。
    只需在Gloab.asax.cs中 Session_Start事件时,初始化一下所用的session即可。
    protected void Session_Start(Object sender, EventArgs e)
    {
    Session["logon"]=0;
    Session["IsLoginEditor"]=0;
    Session["IsLoginAudit"]=0;
    Session["DefaultAdmin"]=0;
    Session["DefaultEditor"]=0;
    Session["DefaultAudit"]=0;
                        }
      

  4.   

    peng_0_0_1983(这头猪很瘦) 兄别见怪啊!因为你楼上的先回答的所以分多
    呵呵还有peng_0_0_1983(这头猪很瘦)兄我认为最好不要在Session_Start中初始化吧!
    要不比如说象我那个小例子,本来那个Session没有的一初始化,Session会占用很多资源的吧!(小弟愚见!呵呵)
      

  5.   

    呵呵,你可以参见MSDN,其实正确的用法是最好初始化,就像你用其它公共变量一样。你也不想在每个使用session的页面判断一下isnull吧。
      

  6.   

    一般来说本来就不应该在Session里面放太多的东西,也不提倡直接读写Session,为每一种需要用Session保存的东西(例如用户数据)写一个专门的接口是有必要的。