日期:2014-05-19  浏览次数:21024 次

COOKIES的System.NullReferenceException: 未将对象引用设置到对象的实例
未将对象引用设置到对象的实例。  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.NullReferenceException:   未将对象引用设置到对象的实例。

源错误:  


行   14:           protected   void   Page_Load(object   sender,   EventArgs   e)
行   15:           {
行   16:                   string   ck   =   Request.Cookies[ "Ly_Cookies "][ "Ly_UserName "].ToString();
行   17:                   if   (ck   ==   null)
行   18:                   {
 

源文件:   e:\自写.NET\xingerxd\Admin_Index.aspx.cs         行:   16  

堆栈跟踪:  


[NullReferenceException:   未将对象引用设置到对象的实例。]
      Admin_Index.Page_Load(Object   sender,   EventArgs   e)   in   e:\自写.NET\xingerxd\Admin_Index.aspx.cs:16
      System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr   fp,   Object   o,   Object   t,   EventArgs   e)   +15
      System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object   sender,   EventArgs   e)   +34
      System.Web.UI.Control.OnLoad(EventArgs   e)   +99
      System.Web.UI.Control.LoadRecursive()   +47
      System.Web.UI.Page.ProcessRequestMain(Boolean   includeStagesBeforeAsyncPoint,   Boolean   includeStagesAfterAsyncPoint)   +1061

 


以上是错误的代码
Response.Cookies[ "Ly_Cookies "][ "Ly_UserName "]   =   UserName.Trim();
Response.Cookies[ "Ly_Cookies "][ "Ly_UserPurview "]   =   dr[ "UserPurview "].ToString();

这个是登录成功后写入的COOKIES,包括用户名和权限

如果是通过登录页面转过去的话,那么就能正常显示
但是如果是在地址栏里面直接输入需要验证页面的话,比如admin_index.aspx
那么就会出现错误,错误以上,
  string   AdminName   =   Request.Cookies[ "Ly_Cookies "][ "Ly_UserName "];

这样都有错么,整了我一天的问题了,

------解决方案--------------------
未将对象引用设置到对象的实例
意思是你的对象为空.如果是通过登录页面转过去的话,Cookies[ "Ly_Cookies "][ "Ly_UserName "] 已赋了值,因此可以正常显示.
如果是在地址栏里面直接输入需要验证页面,此时Cookies[ "Ly_Cookies "][ "Ly_UserName "] 未赋值,其值为空,因此会导致 "未将对象引用设置到对象的实例 "的错误.
------解决方案--------------------
1.出错原因
Cookies[ "Ly_Cookies "][ "Ly_UserName "]为空,所以ToString()报错(未将对象引用设置到对象的实例)
2.解决方法
每个页面登陆前判断Cookies[ "Ly_Cookies "][ "Ly_UserName "]是否为空,若为空则返回登陆页面,你也可以写一个类,重写OnLoad方法(验证Cookies[ "Ly_Cookies "][ "Ly_UserName "]是否为空,空则返回登陆页面),并且每个页面继承这个类