为什么我的cookie没有设置?

时间:2010-12-18 14:48:18

标签: c# asp.net asp.net-mvc cookies

我正在玩ASP.NET,并试图在一个动作中设置一个cookie,这个动作将在另一个动作中被读取。

奇怪的是:cookie被设置,但在访问另一个页面时失去了它的价值。这是我简单的控制器代码:

public class HomeController : Controller
{
    public ActionResult About()
    {
        var cookie = Response.Cookies.Get("sid");
        ViewData["debug"] = "Id: " + cookie.Value;

        return View();
    }

    public ActionResult DoLogin()
    {
        var cookie = new HttpCookie("sid", Guid.NewGuid().ToString());
        cookie.HttpOnly = true;
        Response.Cookies.Add(cookie);

        return RedirectToAction("About");
    }
}

流程是这样的:首先我访问/Home/DoLogin,然后我被重定向到/Home/About,它应该实际输出sid cookie的值。但是cookie没有任何价值。

  • 我的浏览器未禁用Cookie
  • 我知道ASP.NET有自己的会话处理机制,只是玩弄并偶然发现这个cookie问题

感谢任何提示!

1 个答案:

答案 0 :(得分:9)

About操作中,请改用Request.Cookies

作为一个简短的解释:当您在Response.Cookies中设置内容时,该cookie将被发送到存储它的客户端。在到达相同名称空间的每个后续请求中,在到达到期日期之前,客户端将该cookie发送到服务器,服务器将其存储在Request.Cookies中。