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

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

更新:我添加了一个 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/

相关文章:

c# - Unity Networking中如何知道客户端和服务器是否已连接

c# - Aspx Web 窗体命令参数

asp.net - Chrome 本地主机 cookie 未设置

jquery - 如何将文件内容从 HTML5 FileUpload 传递到 Web 服务(asmx)?

c# - WPF: MemoryStream 占用大量内存

c# - DLImport c# 控制台应用程序导入 c++ DLL

c# - 处理长时间运行的报告

asp.net - ASP.NET 中的模拟和委托(delegate)(使用 SQL Server)

jquery - Ajax 调用状态无法加载资源。简单的 ASP.NET 联系人类

java - 从 WCF 服务执行 JAR