1

我正在使用 ASP.net 来存储 cookie。我在后面的代码(C#)中的弹出窗口中保存了一个 cookie。如果我在弹出窗口关闭之前请求 cookie,那么 cookie 就在那里,但是关闭弹出窗口并返回它并查看 Page_Load 事件中的 cookie 显示没有 cookie。我如何让它坚持下去?

弹出确定按钮中的以下代码

// Set the cookie.
this.Response.Cookies["UserData"].Secure = true;
this.Response.Cookies["UserData"]["UserId"] = iId.ToString();
this.Response.Cookies["UserData"]["UserEmail"] = strEmail;
this.Response.Cookies["UserData"].Expires = DateTime.Now.AddDays(1);

以下代码放置在 Page_Load 事件中

// Get the cookie.
if (null != this.Request.Cookies["UserData"])
{
    // Transmit the cookie information using SSL. Note, the cookie data is still in plain text on the user's computer.
    this.Request.Cookies["UserData"].Secure = true;

    // Extract: Email
    String strEmail = this.Server.HtmlEncode(oPage.Request.Cookies["UserData"]["UserEmail"]);
}

自然,第一次将显示空,但随后的加载应显示 cookie。

使用 .Values["Subitem"] = "whatever" 时我的运气稍好一些,但这使基础得以持续存在,但所有子项都消失了。

4

1 回答 1

2

一个可能的原因:您的页面是 HTTP,但您将 cookie 设置为仅限 HTTPS。因此浏览器根本不会将它们与 HTTP 请求一起发送回您的站点。

使用 Fiddler(或其他 HTTP 调试器)查看 cookie 是否在响应(和下一个请求)中正确发送。

于 2013-01-03T00:53:09.060 回答