我在自定义类中收到此错误。 代码如下,我突出显示了出现错误的行,并且我已经检查了 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;
}
更新:我添加了一个 If 语句来检查“null”,它甚至没有通过这个,我在 if 语句中得到相同的异常,看起来它无法处理 HttpContext.Current.Request 是什么。
欢迎任何意见。
最佳答案
cookie 可能存在,但要获取它们,您需要有一个页面
、来自客户端的请求以及与其浏览器的连接,以便能够读取存在于浏览器。
如果您从线程内部、进程内部、页面末尾或页面外部的任何位置进行此调用,则 HttpContext.Current
为 null,和/或HttpContext.Current.Request
为空。
尝试从页面调用内部运行该函数。
我通常会为类似的情况添加一个断言,以提醒我是否从并非来自页面的线程进行调用。
Debug.Assert(HttpContext.Current != null, "Need to be call from inside a page");
关于c# - 你调用的对象是空的。 (HttpContext.Current.Request),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329435/