我有两个页面,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可以工作,但是它不起作用,我不知道为什么。
答案 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)
使用Response.Cookies.Add(cookie);
参考:http://msdn.microsoft.com/en-us/library/system.web.httpresponse.cookies
答案 4 :(得分:0)
在页面test2.aspx
你应该试试这个
protected void Page_Load(object sender, EventArgs e)
{
var httpCookie = Request.Cookies["test"];
if (httpCookie != null)
{
Response.Write(httpCookie.Value);
}
}