你调用的对象是空的。 (HttpContext.Current.Request)

时间:2013-05-02 02:30:27

标签: c# asp.net

我在自定义类中收到此错误。 代码如下,我突出显示了我遇到错误的行,并且我已经检查过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是什么。

赞赏任何意见。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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