ASP.NET Request.Cookies.Get(“Cookie”)返回Null

时间:2014-09-02 02:01:15

标签: c# asp.net cookies

这个问题似乎已被多次提出,但我找不到能帮助我的答案。

我在母版页文件的代码隐藏中有代码,当下拉控件发生更改时,它会设置cookie。如果我注释掉重定向行,我可以看到cookie已正确设置,因为创建新cookie并成功输出其值会显示已更改下拉列表的新值。

但是,如果我允许重定向,则page_load中的代码将报告cookie集为空。非常感谢任何帮助!

protected void ThemeSelection_SelectedIndexChanged(object sender, EventArgs e)
{

    HttpCookie themeCookie = new HttpCookie("PreferredTheme");
    themeCookie.Expires = DateTime.Now.AddMonths(3);
    themeCookie.Value = ThemeSelection.SelectedValue;

    Request.Cookies.Add(themeCookie);

    HttpCookie cookieCheck = Request.Cookies.Get("PreferredTheme");
    Response.Write(cookieCheck.Value);

    Response.Redirect(Request.Url.ToString());

}

protected void Page_Load(object sender, EventArgs e)
{

    HttpCookie preferredTheme = Request.Cookies.Get("PreferredTheme");

    if (preferredTheme == null)
    {
        Response.Write("PreferredTheme is null");
    }

}

1 个答案:

答案 0 :(得分:3)

如果您希望cookie在请求之间存活,则需要使用响应 .Cookies ....将cookie发送到客户端。当下一个请求进入时,cookie将在那里。

When to use Request.Cookies over Response.Cookies?