何时通过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; }
- WebClient.DownloadString()返回具有特殊字符的string
- WCF:System.Net.SocketException – 通常只允许使用每个套接字地址(协议/networking地址/端口)
- 使用Cassini而不是IIS的(dis)优点是什么?
- ASP.NET临时文件清理
- 如何在OnActionExecuting中获取控制器和操作名称?
- 如何更新C#中List <>中的对象
- 设置Response.StatusCode时IIS7重写customErrors?
- ASP.NET MVC – 设置自定义IIdentity或IPrincipal
- 什么是ASP.Net中的dll.refresh文件?