Хорошо, вот 411 - у меня есть следующий обработчик событий в моем файле Global.asax.cs:
private void Global_PostRequestHandlerExecute(object sender, EventArgs e)
{
if (/* logic that determines that this is an ajax call */)
{
// we want to set a cookie
Response.Cookies.Add(new HttpCookie("MyCookie", "true"));
}
}
Этот обработчик будет работать во время запросов Ajax (в результате использования инфраструктуры Ajax, которую я использую), а также в других случаях - условие оператора if отфильтровывает не-Ajax-события и работает просто отлично (это не так. здесь не уместно, поэтому я для краткости не включил его).
Достаточно сказать, что это работает просто отлично - файл cookie установлен, я могу прочитать его на клиенте, и все хорошо до этого момента.
Теперь о той части, которая сводит меня с ума.
Вот функция JavaScript, которую я использую для удаления куки:
function deleteCookie(name) {
var cookieDate = new Date();
cookieDate.setTime(cookieDate.getTime() - 1);
document.cookie = (name + "=; expires=" + cookieDate.toGMTString());
}
Так что, конечно, в какой-то момент после установки cookie я удаляю его так:
deleteCookie("MyCookie");
Только это не делает работу; печенье все еще существует. Итак, кто-нибудь знает почему?