我是否在页面事件(例如加载)时使用响应,因为这是来自ASP.NET的响应,并且在按下按钮时请求,因为这是对ASP.NET进行处理的响应?或者还有更多吗?
答案 0 :(得分:98)
它们是两个不同的东西,一个 SAVES [响应],另一个 READS [请求]
在Cookie中(信息学说话):) 保存一段时间的小文件,其中包含字符串
类型的对象 你在save a cookie做的.NET框架中的:
HttpCookie myCookie = new HttpCookie("MyTestCookie");
DateTime now = DateTime.Now;
// Set the cookie value.
myCookie.Value = now.ToString();
// Set the cookie expiration date.
myCookie.Expires = now.AddMinutes(1);
// Add the cookie.
Response.Cookies.Add(myCookie);
Response.Write("<p> The cookie has been written.");
你写了一个可用一分钟的cookie ...通常我们现在 now.AddMonth(1)所以你可以保存一整个月的cookie。
要retrieve a cookie,您可以使用请求(您正在申请),例如:
HttpCookie myCookie = new HttpCookie("MyTestCookie");
myCookie = Request.Cookies["MyTestCookie"];
// Read the cookie information and display it.
if (myCookie != null)
Response.Write("<p>"+ myCookie.Name + "<p>"+ myCookie.Value);
else
Response.Write("not found");
<强>记住:强>
要删除Cookie,没有直接代码,诀窍是保存相同的Cookie名称,其中已过了有效期,例如 now.AddMinutes(-1 )强>
这将删除cookie。
如您所见,每次Cookie的生命周期到期时,该文件都会自动从系统中删除。
答案 1 :(得分:40)
在Web应用程序中,请求来自浏览器,响应是服务器发回的内容。从浏览器验证cookie或cookie数据时,您应该使用Request.Cookies。当您构建要发送到浏览器的cookie时,您需要将它们添加到Response.Cookies。
答案 2 :(得分:19)
编写Cookie时,请使用“响应”,但阅读可能取决于您的情况。通常,您从请求中读取,但如果您的应用程序试图获取刚刚编写或更新的cookie并且未发生浏览器往返,则可能需要从响应中读取它。
我一直在使用这种模式,它对我来说效果很好。
public void WriteCookie(string name, string value)
{
var cookie = new HttpCookie(name, value);
HttpContext.Current.Response.Cookies.Set(cookie);
}
public string ReadCookie(string name)
{
if (HttpContext.Current.Response.Cookies.AllKeys.Contains(name))
{
var cookie = HttpContext.Current.Response.Cookies[name];
return cookie.Value;
}
if (HttpContext.Current.Request.Cookies.AllKeys.Contains(name))
{
var cookie = HttpContext.Current.Request.Cookies[name];
return cookie.Value;
}
return null;
}
答案 3 :(得分:4)
Cookie来自Request.Cookies集合中的浏览器。这是您阅读已发送的cookie的地方。
要将cookie发送回浏览器,请将它们放入Response.Cookies集合中。
如果要删除cookie,则必须通过发送已经过期的cookie来告诉浏览器将其删除。浏览器正在使用客户端计算机的本地时间,因此如果您使用服务器时间来创建日期,请务必减去至少一天以确保它实际上已在客户端本地时间传递。
答案 4 :(得分:3)
当我在.NET中创建或更新cookie时,通常会对请求和响应cookie集合执行此操作。这样,您可以确定如果您尝试在页面请求序列中进一步读取cookie,它将获得正确的信息。
答案 5 :(得分:1)
安德鲁的代码在“AllKeys.Contains”方法中出错。所以我纠正了一点..
public void WriteCookie(string strCookieName, string strCookieValue)
{
var hcCookie = new HttpCookie(strCookieName, strCookieValue);
HttpContext.Current.Response.Cookies.Set(hcCookie);
}
public string ReadCookie(string strCookieName)
{
foreach (string strCookie in HttpContext.Current.Response.Cookies.AllKeys)
{
if (strCookie == strCookieName)
{
return HttpContext.Current.Response.Cookies[strCookie].Value;
}
}
foreach (string strCookie in HttpContext.Current.Request.Cookies.AllKeys)
{
if (strCookie == strCookieName)
{
return HttpContext.Current.Request.Cookies[strCookie].Value;
}
}
return null;
}