Как правило, свойство коллекции cookie (Cookies
) доступно только для чтения (по крайней мере, при использовании свойства ASP.NET Response.Cookies
).
Давно я не использовал HttpListener
,Итак, знаете ли вы, является ли коллекция Cookies нулевой, до назначения вашей собственной коллекции cookie?Если нет, можете ли вы попробовать просто добавить cookie, а не коллекцию cookie?
Редактировать:
Я создал тестовый веб-сервер, используя HttpListener
, и это то, что янайденный.Когда вы устанавливаете cookie, заголовок http выглядит следующим образом:
Set-Cookie: username = shiv
, тогда как в действительности он должен выглядеть примерно так:
Set-Cookie: username = shiv;истекает = чт, 27 января 2011 г. 00:45:41 GMT;путь = /
Так на данный момент это похоже на ошибку?Я буду копать глубже и дам вам знать ...
Изменить 2:
Хорошо, время файлов cookie Expiration
должно быть установлено как время по Гринвичу.ASP.NET берет это на себя за вас, но в этом случае вам придется использовать правильный формат самостоятельно.
Ручная настройка заголовка Http работает как положено:
context.Response.Headers.Add("Set-Cookie",
"username=shiv; expires=Thu, 27-Jan-2011 00:45:41 GMT; path=/");
гдеcontext
- это HttpListenerContext
.
Кажется, что это единственный способ установить (не сеансовый) cookie с использованием HttpListener
.Вы можете использовать эту строку формата DateTime
для правильного форматирования даты, если вы идете по маршруту, который я предложил:
var cookieDate = DateTime.UtcNow.AddMinutes(60d).ToString("dddd, dd-MM-yyyy hh:mm:ss GMT");