3

我有两个页面,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。我试图打开第 1 页,然后打开第 2 页,希望 cookie 可以工作,但它不工作,我不知道为什么。

4

5 回答 5

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

于 2012-07-02T04:47:00.243 回答
2

你需要的是:

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

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

问候

于 2012-07-02T04:51:03.767 回答
2

用 (response) 保存 cookie,用 (request) 读取 cookie

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

//read
if ((request.cookies("abc") != null)) {
string abc = request.cookies("abc");
}
于 2012-11-08T21:57:46.377 回答
1

采用Response.Cookies.Add(cookie);

参考:http: //msdn.microsoft.com/en-us/library/system.web.httpresponse.cookies

于 2012-07-02T04:51:42.800 回答
0

在页面 test2.aspx

你应该试试这个

    protected void Page_Load(object sender, EventArgs e)
    {
        var httpCookie = Request.Cookies["test"];
        if (httpCookie != null) 
        {
            Response.Write(httpCookie.Value);
        }
    }
于 2012-07-02T05:13:42.320 回答