Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在我得到异常之前,只能枚举前20个左右的cookies_Asp.net_Internet Explorer_Firefox - Fatal编程技术网

Asp.net 在我得到异常之前,只能枚举前20个左右的cookies

Asp.net 在我得到异常之前,只能枚举前20个左右的cookies,asp.net,internet-explorer,firefox,Asp.net,Internet Explorer,Firefox,下面的代码创建100个cookie,然后通过回发对它们进行枚举 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { for (int i = 0; i < 100; i++) { HttpCookie cookie = new HttpCookie("cookie num." + i.ToString());


下面的代码创建100个cookie,然后通过回发对它们进行枚举

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        for (int i = 0; i < 100; i++)
        {
            HttpCookie cookie = new HttpCookie("cookie num." + i.ToString());
            cookie["Cookie"] = i.ToString() + "th cookie, anyone?";
            cookie.Expires = DateTime.Now.AddMonths(1);
            Response.Cookies.Add(cookie);
        }

        int i1 = 0;
        Session["i"] = i1;
    }

    if (IsPostBack)
    {
        int i = (int)Session["i"];
        HttpCookie cookie= Request.Cookies["Cookie num." + i.ToString()];
        Label1.Text = cookie["Cookie"];
        Session["i"] = ++i;
    }
 }
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
对于(int i=0;i<100;i++)
{
HttpCookie cookie=新的HttpCookie(“cookie num.”+i.ToString());
cookie[“cookie”]=i.ToString()+“有人要饼干吗?”;
cookie.Expires=DateTime.Now.AddMonths(1);
Response.Cookies.Add(cookie);
}
int i1=0;
会话[“i”]=i1;
}
如果(iPostBack)
{
int i=(int)会话[“i”];
HttpCookie cookie=Request.Cookies[“cookie编号”+i.ToString();
Label1.Text=cookie[“cookie”];
会话[“i”]=++i;
}
}

Q1-但当使用Firefox时,应用程序无法枚举所有100个cookie,而只能在报告未设置为对象异常实例的对象引用之前,先遍历前20个(最多40个)cookie:


Q2-当我通过IE请求此页面时,在第一次回发时,我将始终获得未设置为对象异常实例的对象引用(顺便说一句,我检查了,IE成功地将所有100个cookie存储到一个文件中)


塔克斯


编辑:

但以下链接适用于IE,而Firefox并没有保存所有cookie。使用IE,代码无法通过任何cookie进行枚举。因此,如果我至少能够列举出IE中的前20个cookie,那么上面的答案将是有效的,而我不是


2.编辑:

该规范无法保证浏览器在存储空间不足时必须保留哪些cookie,因此浏览器可以自由地按照自己的喜好进行操作,您应该期望不同的行为。此外,在您的示例中,所有cookie都设置在单个响应的头中。HTTP头是不按顺序排列的,因此不能保证它们首先会按任何特定顺序进行处理

你所说的“加工”到底是什么意思?

谢谢你帮了我的忙

预计到达时间:

但以下链接适用于IE,而Firefox并没有保存所有cookie

是的,但是文章引用了RFC2109,这也适用于Firefox

至于何时出现错误,这将取决于浏览器决定保留哪些cookie。如果它保持前20个cookie的设置,那么您将在cookie20中得到一个错误;如果它扔掉以前的cookie为新cookie腾出空间,那么只剩下cookie80-cookie99,尝试访问cookie0将出错

该规范无法保证浏览器在存储空间不足时必须保留哪些cookie,因此浏览器可以自由地按照自己的喜好进行操作,您应该期望不同的行为。此外,在您的示例中,所有cookie都设置在单个响应的头中。HTTP头是不按顺序排列的,因此不能保证它们首先会按任何特定顺序进行处理

RFC2109的限制通常不能完全反映现实情况,但每个浏览器都有自己的cookie限制,您通常应该努力将cookie数据降至最低。

预计到达时间:

但以下链接适用于IE,而Firefox并没有保存所有cookie

是的,但是文章引用了RFC2109,这也适用于Firefox

至于何时出现错误,这将取决于浏览器决定保留哪些cookie。如果它保持前20个cookie的设置,那么您将在cookie20中得到一个错误;如果它扔掉以前的cookie为新cookie腾出空间,那么只剩下cookie80-cookie99,尝试访问cookie0将出错

该规范无法保证浏览器在存储空间不足时必须保留哪些cookie,因此浏览器可以自由地按照自己的喜好进行操作,您应该期望不同的行为。此外,在您的示例中,所有cookie都设置在单个响应的头中。HTTP头是不按顺序排列的,因此不能保证它们首先会按任何特定顺序进行处理


RFC2109的限制通常不能完全反映现实情况,但每个浏览器都有自己的cookie限制,您通常应该努力将cookie数据降至最低。

Internet Explorer拒绝您的cookie可能有几个原因(例如安全设置等)

此外,所有浏览器都有接受cookie数量的限制(20到50之间),此外cookie字符串的总长度也有限制(例如10 kB)

因此,没有机会在任何浏览器中设置100个cookie

您可以在这里找到一位Internet Explorer程序员对所有这些问题的详细答案:
Internet Explorer拒绝您的Cookie可能有几个原因(例如安全设置等)

此外,所有浏览器都有接受cookie数量的限制(20到50之间),此外cookie字符串的总长度也有限制(例如10 kB)

因此,没有机会在任何浏览器中设置100个cookie

您可以在这里找到一位Internet Explorer程序员对所有这些问题的详细答案: