C#Cookies(修改/替换的问题)

时间:2011-08-24 10:53:05

标签: c# cookies httplistener

我无法修改服务器端存储在Cookie中的SessionKey的最后一个值。下一个请求中的SessionKey仍具有旧值。我的服务器端代码有什么问题?

var varHttpListenerContextResponseCookie_SessionKey =
    refHttpListenerContext.Response.Cookies[Constants.Cookies.LongNames.SessionKey];

if (varHttpListenerContextResponseCookie_SessionKey != null)
{
    varHttpListenerContextResponseCookie_SessionKey.Value = refSessionKey;
}
else
{
    refHttpListenerContext.Response.AppendCookie(
       new System.Net.Cookie(Constants.Cookies.LongNames.SessionKey, refSessionKey));
}

请帮助我!:)

3 个答案:

答案 0 :(得分:3)

如果要更新值

,必须记住将修改后的cookie添加到Response
// get existing cookie or create new
var cookie = Request.Cookies[Constants.Cookies.LongNames.SessionKey] ?? new HttpCookie(Constants.Cookies.LongNames.SessionKey);
// set cookie value
cookie.Value = refSessionKey;
// add cookie to http repsonse
Response.Cookies.Add(cookie);

MSDN - Basics of Cookies in ASP.NET

答案 1 :(得分:0)

根据我的理解,您希望修改会话密钥。如果它是正确的,那么您可以使用SessionManager,它将允许您创建新的会话密钥。如果这不是您想要的,请提供有关您问题的更多详细信息。

谢谢, 沙市

如果您的问题得到了回答,请将其标记为已回答。

答案 2 :(得分:0)

同样在修改/添加cookie时,不要忘记创建/增加过期时间,因为过期的cookie可能无法检索

cookieForPage.Expires = DateTime.Today.AddYears(100);