Im пытается сделать постоянное печенье с помощью C# 4.0 и этот код:Куки не работает в C#
HttpCookie AssoCookie = new HttpCookie("AssociateCode", AssociateCode);
AssoCookie.Expires = DateTime.Now.AddMonths(6);
HttpContext.Current.Response.Cookies.Add(AssoCookie);
К сожалению, это не работает, и куки сессии истекает. Если я использую Web Developer плагин в Firefox, чтобы проверить это я могу видеть эту информацию:
Name AssociateCode
Value test
Host localhost
Path /
Secure No
Expires At End Of Session
Куки я делаю как тест его только что созданной там, никто еще управляет его или редактирует его, чтобы он не может быть перезаписаны. В webconfig ничего не установлен, чтобы установить срок действия cookie (в любом случае это должно переопределить это), и если я установил время истечения срока действия cookie, оно не работает.
Я немного потерял сейчас, каждое руководство, учебник, блог, все, что я проверяю, говорит, что вам просто нужно установить дату истечения срока действия, Ive отлаживается, Ive проверил, что это действительно имеет это значение при создании и в конце Page_PreRender, но он просто заканчивается сессией, что бы я ни делал.
Любые идеи?
Im using Firefox 9.0.1 btw.
Update
Использование 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 { }
Вы уверены, что сам файл cookie истекает или истекает срок его действия из-за поведения сеанса? После истечения срока действия сеанса во время отладки файл cookie физически больше не привязан к запросу? –
Если я закрою окно браузера и откройте его снова, файл cookie исчезнет. И это происходит без запроса на страницу. Таким образом, его срок действия действительно «Конец сеанса». –
Я тестировал и не испытывал никаких проблем. Браузер помнил куки-файл даже после его закрытия и снова открывал его. Я бы предложил использовать Fiddler, чтобы просто дважды проверить, что cookie действительно отправляется в браузер с соответствующим заголовком истечения срока действия, и браузер правильно отправляет его обратно на сайт после закрытия/повторного открытия. – MerickOWA