2013-05-02 114 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

相關問題