2

我在自定义类中收到此错误。代码如下,我突出显示了出现错误的行,并且我已经检查了 cookie 是否存在:

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;
}

更新:我添加了一个检查'null'的If语句,它甚至没有通过这个,我在if语句中得到了相同的异常,看起来它无法处理HttpContext.Current.Request是什么。

任何输入表示赞赏。

4

1 回答 1

4

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

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

尝试从您的页面调用内部运行该函数。

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

Debug.Assert(HttpContext.Current != null, "Need to be call from inside a page");
于 2013-05-02T03:02:32.107 回答