2013-05-02 115 views
2

我在我的自定义类中出现此错误。 的代码如下,我强调,我到那里的错误就行了,我已经检查过该cookie存在:未将对象引用设置为对象的实例。 (HttpContext.Current.Request)

static private Dictionary<string,string> KeyValueGet() 
{ 
    Dictionary<string, string> ArrKeyVal = new Dictionary<string, string>(); 
    NameValueCollection CookieData = new NameValueCollection(); 
    **if (HttpContext.Current.Request.Cookies["CartData"].Values != null)** 
    { 
     CookieData = HttpContext.Current.Request.Cookies["CartData"].Values; 
     string[] CookieKeys = CookieData.AllKeys; 
     foreach (string s_key in CookieKeys) 
     { 
      ArrKeyVal.Add(s_key, CookieData[s_key]); 
     } 
    } 
    return ArrKeyVal; 
} 

更新:我补充说,检查的一个if语句“空”,它不”即使通过这个,我得到了在if语句内的相同异常,它看起来像它不能处理什么HttpContext.Current.Request。

任何输入表示赞赏。

+1

您是否尝试检查以查看哪些为空?也就是说,它是HttpContext吗?当前?请求?饼干[ “CartData”]? – aquinas 2013-05-02 02:32:14

+1

@RealityDysfunction,抛出的异常为null,它不一定必须是'Cookies [“CartData”]',您是否调试过并查看哪个对象为空?它可能是'HttpContext.Current.Request'。 – Ryan 2013-05-02 02:37:55

+0

我的直觉告诉我,HttpContext.Current.Request是罪魁祸首,因为这是一个我创建的新类(不是代码隐藏),而且在加入Request之前我有一些麻烦,直到我添加了HttpContext.Current。 – RealityDysfunction 2013-05-02 02:46:05

回答

3

Cookie可能存在,但为了获得它们,您需要有一个page,来自客户端的请求以及与其浏览器的连接,以便能够读取位于浏览器中的cookie。

如果您从线程或进程内部,页面末尾或页面外部的任何位置进行此调用,则HttpContext.Current为空,并且/或HttpContext.Current.Request为空。

尝试从页面调用中运行该功能。

我通常为这种情况添加一个断言,以提醒我是否从不是来自页面的线程进行调用。

Debug.Assert(HttpContext.Current != null, "Need to be call from inside a page"); 
+1

谢谢,我通过页面调用了响应/请求,并且都通过了。 – RealityDysfunction 2013-05-03 06:08:13

相关问题