Хорошо, вот 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, которую я использую для удаления файла cookie:
function deleteCookie(name) {
var cookieDate = new Date();
cookieDate.setTime(cookieDate.getTime() - 1);
document.cookie = (name + "=; expires=" + cookieDate.toGMTString());
}
Итак, конечно, в какой-то момент после установки файла cookie я удаляю его следующим образом:
deleteCookie("MyCookie");
Только это не работает; файл cookie все еще существует. Итак, кто-нибудь знает, почему?