何时通过Response.Cookies使用Request.Cookies?

我是否在页面事件(如加载)时使用响应,因为这是来自ASP.NET的响应,并且在按下button时请求响应,因为这是ASP.NET处理的响应? 还是有更多的呢?

他们是两个不同的东西,一个SAVES [Response],另一个READS [请求]

在一个cookies(信息学):)你保存一段时间的小文件,包含一个stringtypes的对象

在.NET框架中保存一个cookie ,

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,可用一分钟…通常我们现在做.AddMonth(1),所以你可以保存一个cookie一整个月。

要检索一个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名称与已经过去的有效date,例如now.AddMinutes(-1)

这将删除cookie。

正如您所看到的,每当cookie的生命周期到期时,该文件将自动从系统中删除。

在Web应用程序中,请求是来自浏览器的请求,响应是服务器发回的内容。 从浏览器validationcookie或cookie数据时,您应该使用Request.Cookies。 当您构build要发送到浏览器的Cookie时,您需要将它们添加到Response.Cookies。

当写一个cookie,使用响应,但阅读可能取决于你的情况。 通常情况下,您从请求中读取,但是如果您的应用程序试图获取刚写入或更新的cookie,并且没有发生浏览器往返,则可能需要将其读取为Response。

我一直在使用这种模式一段时间,它适合我。

 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; } 

Cookie来自Request.Cookies集合中的浏览器。 那就是你阅读发送的cookies的地方。

要将cookies发回到您将其放入Response.Cookies集合中的浏览器。

如果你想删除一个cookie,你必须告诉浏览器通过发送一个已经过期的cookie来删除它。 浏览器正在使用客户端计算机的本地时间,所以如果您使用服务器时间来创builddate,那么一定要至less减去一天,以确保它实际上已经在客户端本地时间传递。

当我在.NET中创build或更新cookie时,通常会将它同时应用于请求和响应cookie集合。 这样,您可以确定,如果您尝试按照页面请求顺序进一步读取cookie,它将具有正确的信息。

安德鲁的代码在“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; }