Следующий код создает 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;
}
}
В1 - Но при использовании Firefox, вместо того, чтобы перечислять все 100 файлов cookie, приложению удается только пройти первые 20 (макс. 40) файлов cookie перед отчетом. Ссылка на объект не установлена на экземпляр объекта Исключение:
Q2 - когда я запрашиваю эту страницу через IE, я всегда получаю Ссылка на объект не установлена на экземпляр объекта исключение (Кстати, я проверил, и IE удалось сохранить все 100 файлов cookie в один файл) при первой обратной передаче.
1020 * спасибо *
EDIT:
Но следующая ссылка применима к IE, а Firefox не сохраняет все файлы cookie. И с IE, код не может перечислить ни один из файлов cookie. Поэтому приведенный выше ответ был бы действительным, если бы я хотя бы смог перечислить первые 20 файлов cookie (в IE), которые я не
2. РЕДАКТИРОВАТЬ:
Спецификация не дает никаких гарантий относительно того, какие куки должен хранить браузер, когда у него заканчивается хранилище, поэтому браузеры могут вести себя так, как им нравится, и вам следует ожидать различного поведения. Более того, в вашем примере все файлы cookie установлены в заголовках одного ответа. Заголовки HTTP не упорядочены, поэтому нет гарантии, что они будут обработаны в любом конкретном порядке.
Что именно вы подразумеваете под "обработанным"?
Спасибо за помощь