Я пытаюсь создать постоянный файл cookie, используя C # 4.0 и этот код:
HttpCookie AssoCookie = new HttpCookie("AssociateCode", AssociateCode);
AssoCookie.Expires = DateTime.Now.AddMonths(6);
HttpContext.Current.Response.Cookies.Add(AssoCookie);
К сожалению, это не работает, и cookie истекает сессия. Если я использую плагин Web Developer в Firefox, чтобы проверить его, я вижу эту информацию:
Name AssociateCode
Value test
Host localhost
Path /
Secure No
Expires At End Of Session
Файл cookie, который я создаю в качестве теста, только что создан там, никто другой не управляет им и не редактирует его, поэтому он не может быть перезаписан. У меня ничего не настроено в webconfig, чтобы установить срок действия файлов cookie (в любом случае это должно переопределить это), и если я установлю время истечения срока действия некоторых файлов cookie, это не сработает.
Я немного растерялся, каждое руководство, учебник, блог, что бы я ни проверял, говорит, что вам просто нужно установить дату окончания срока действия, я отлажен, я проверил, что оно действительно имеет это значение при создании и в конце Page_PreRender но он просто заканчивается сессией, что бы я ни делал.
Есть идеи?
Я использую Firefox 9.0.1.
Обновление
Используя плагин Firebug в Firefox для проверки заголовков ответов, я получаю это:
Response Headersview source
Cache-Control private
Connection Close
Content-Length 21322
Content-Type text/html; charset=utf-8
Date Mon, 23 Jan 2012 16:47:08 GMT
Server ASP.NET Development Server/10.0.0.0
Set-Cookie AssociateCode=test; expires=Mon, 23-Jul-2012 16:09:04 GMT; path=/
X-AspNet-Version 4.0.30319
И используя Fiddler я получаю это:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Set-Cookie: AssociateCode=; expires=Mon, 23-Jul-2012 16:27:29 GMT; path=/
X-Powered-By: ASP.NET
Date: Mon, 23 Jan 2012 17:27:29 GMT
Content-Length: 21313
** Обновление 2 **
Я проверяю, что Cookie не существует, просто проверяя файлы cookie моего Firefox, но, на случай, если вы захотите узнать, как я получу его позже в коде (необязательно, так как его там нет в любом случае):
try {
AssociateCode = HttpContext.Current.Request.Cookies.Get("AssociateCode").Value;
} catch { }