asp.net-mvc – Chrome丢失了cookie
我在我的实时网站上收到一个错误,我在Dev环境中没有看到这个错误,而且似乎只发生在Chrome上.我已经四处寻找解决方案,我发现只有Auth cookie的问题. (我实际上在过去提出了关于chrome和auth cookie的问题),但这是不同的.
我将用户购物车存放在cookie中.我这样设置了cookie HttpCookie responseCookie = HttpContext.Response.Cookies[CartHelper.CART]; responseCookie.PackCartCookie(vm.Cart); 扩展方法PackCartCookie设置cookie值的方式如此 cookie.Value = HttpUtility.UrlEncode(cookieValue); 此结果是使用以下设置存储的cookie > Domain = www.foo.com 当用户与网站进行交互时,似乎正在创建购物车Cookie,但它会不时丢失或丢失.当我查看Elmah错误并查看HTTP_COOKIE时,我可以看到所有其他cookie(我有其他设置方式相同,功能正常)但我没有看到购物车cookie. 由于这个问题,我不得不更改代码以更加防御.但是你可以想象购物车cookie在整个购买过程中被使用,而我在接受付款的时候我已经失败,但是当购物车消失并且没有通知用户成功购买时系统崩溃.幸运的是,我很早就抓住了这个并且退款的用户受到了影响. 我见过这个问题的用户代理 > Mozilla / 5.0(X11; Linux i686)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 29.0.1547.62 Safari / 537.36 解决方法
让我给你一个解决方案.我已经使用cookie存储了大部分值,并且非常适用于所有浏览器,并且会在特定时间内存储.为此我已经使用静态类来访问每个地方.
我也在这里编码和解码.但你可以通过删除编码和解码并传递正常来存储它.这是我的代码 在这里,我把我的类与静态方法.我使用HttpSecureCode与Encode和Decode使用机器密钥加密.在这种情况下默认情况下可能不可用.你可以直接把价值放在一边. 如果您非常关注使用HttpSecureCode,请使用此link来构建您的课程 public class CookieStore { public static void SetCookie(string key,string value,TimeSpan expires) { HttpCookie encodedCookie = HttpSecureCookie.Encode(new HttpCookie(key,value)); if (HttpContext.Current.Request.Cookies[key] != null) { var cookieOld = HttpContext.Current.Request.Cookies[key]; cookieOld.Expires = DateTime.Now.Add(expires); cookieOld.Value = encodedCookie.Value; HttpContext.Current.Response.Cookies.Add(cookieOld); } else { encodedCookie.Expires = DateTime.Now.Add(expires); HttpContext.Current.Response.Cookies.Add(encodedCookie); } } public static string GetCookie(string key) { string value = string.Empty; HttpCookie cookie = HttpContext.Current.Request.Cookies[key]; if (cookie != null) { // For security purpose,we need to encrypt the value. HttpCookie decodedCookie = HttpSecureCookie.Decode(cookie); value = decodedCookie.Value; } return value; } } 使用这些,您可以轻松地在cookie中存储值,并在需要时获取值 使用这些方法很简单 设置Cookie: CookieStore.SetCookie("currency","GBP",TimeSpan.FromDays(1)); // here 1 is no of days for cookie to live 对于获取Cookie: string currency= CookieStore.GetCookie("currency"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – IE10 SCRIPT5009:’__doPostBack’未定义
- asp.net-mvc – 是否可以使用自定义错误页面与MVC网站,但不
- asp.net – 在中等信任下,在GMail SMTP上发送电子邮件
- asp.net – 从umbraco搜索中排除节点
- asp.net-mvc-2 – 前端控制器,页面控制器?
- asp.net-mvc – Olark免费替代品
- 如何在ASP.Net WebControl的“Content”内部属性??中包含其
- asp.net-mvc-3 – 在WebGrid中向Header添加自定义html
- asp.net – 将JSON数据解析为.NET对象的最佳方式
- asp.net – 根据角色重定向到其他页面
- aspect原理分析
- ASP.NET ViewState的工作原理
- asp.net-mvc-3 – 使用Quartz.Net的MVC 3
- asp.net-mvc – asp.net MVC OutputCache属性的默
- asp.net-mvc – scanMap的目的.CallingAssembly,
- asp.net-mvc – HttpContext和HttpContextWrappe
- ASP.NET中上传并读取Excel文件数据示例
- asp.net-mvc – 添加视图模型类下拉列表不显示我
- asp.net-mvc – ASP.NET MVC5 EF6与ApplicationU
- 是否有任何ASP.NET身份的实现具有另一个级别以上