Cookie在asp.net中不起作用

时间:2012-07-02 04:37:46

标签: asp.net cookies

我有两个页面,test1.aspx和test2.aspx

test1.aspx有这个

protected void Page_Load(object sender, EventArgs e)
{
  HttpCookie cookie = new HttpCookie("test", "test");
  cookie.Expires = DateTime.Now.AddDays(1);
  Response.SetCookie(cookie);
}

test2.aspx有这个

protected void Page_Load(object sender, EventArgs e)
{
  Response.Write(Response.Cookies["test"].Value);
}

无论我尝试了多少次,cookie的值都是null。我试图打开page1然后打开第2页,期望一个cookie可以工作,但是它不起作用,我不知道为什么。

5 个答案:

答案 0 :(得分:8)

我认为你需要阅读Request而不是回复。

作为MSDN建议

protected void Page_Load(object sender, EventArgs e) 
{
    Response.Write(Request.Cookies["test"].Value);
}

在Web应用程序中,请求来自客户端(浏览器),响应从服务器发送。从浏览器验证cookie或cookie数据时,您应使用Request.Cookies集合。当您构建要发送到浏览器的cookie时,您需要将它们添加到Response.Cookies集合。

关于使用SetCookie的其他想法

有趣的是,您在第一页上使用了HttpResponse.SetCookie; MSDN表示此方法不适用于您的代码。

  

此API支持.NET Framework基础结构,不能直接在您的代码中使用。

即使此页面上的示例代码使用Response.Cookies.Add(MyCookie)方法,也不会调用SetCookie

答案 1 :(得分:2)

你需要的是:

protected void Page_Load(object sender, EventArgs e) 
{
    Response.Write(Request.Cookies["test"].Value);
}

这里有一个示例:  Reading and Writing Cookies in ASP.NET and C#

此致

答案 2 :(得分:2)

使用(响应)保存cookie并按(请求)

读取cookie
//write
response.cookies("abc") = 123;

//read
if ((request.cookies("abc") != null)) {
string abc = request.cookies("abc");
}

答案 3 :(得分:1)

答案 4 :(得分:0)

在页面test2.aspx

你应该试试这个

    protected void Page_Load(object sender, EventArgs e)
    {
        var httpCookie = Request.Cookies["test"];
        if (httpCookie != null) 
        {
            Response.Write(httpCookie.Value);
        }
    }