c# - 某些页面上的 Cookie 为空,但其他页面上没有

标签 c# asp.net-mvc-3 cookies

我在一个网站上工作,该网站在所有页面上都有一些共享代码用于导航。在共享代码中,我正在读取一个确定要显示哪个导航的 cookie。 (不同的客户获得不同的体验)。设置 cookie 后,我可以从一个页面导航到另一个页面,并使用 cookie 确定要显示的导航,以便客户始终在每个页面上看到相同的导航。这在除 2 个页面之外的所有 13 个页面上都完美无缺。出于某种原因,它在读取 cookie 时总是返回 null,但如果我返回到其他页面之一,cookie 仍然存在。考虑到这是读取所有页面上的 cookie 的完全相同的一段代码,我对此感到很困惑。知道为什么会发生这种情况吗?

谢谢,

朗达

if (_httpContext != null && _httpContext.Request.Cookies["MyNav"] != null)
        {
            HttpCookie navigationCookie = HttpContext.Current.Request.Cookies["MyNav"];
            topNavDlpCatIdFromCookie = navigationCookie != null &&
                                        Int32.TryParse(navigationCookie["categoryId"], out topNavDlpCatId)
                                            ? topNavDlpCatId
                                            : 0;
        }

最佳答案

我认为这是 cookies“路径”属性的问题。也许当您将 cookie 写入客户端时,您将“路径”设置为服务器上的子文件夹。并且您的 2 页存储在该文件夹之外。比如你写cookie的时候:

Response.AppendCookie(new HttpCookie("MyNav","yourvalue"){path = "/folder1"});

而您的其他 2 个页面存储在 "/folder2" 中。在这种情况下,浏览器不会为这两个页面发送 cookie,这就是为什么您在服务器端得到 null 的原因。

关于c# - 某些页面上的 Cookie 为空,但其他页面上没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16619282/

相关文章:

javascript - 如何在传单 map 上绘制标记

asp.net-mvc-3 - 推荐使用 ASP.NET MVC3 的 API 设计

ruby-on-rails - SPA 的 token 与 Cookie

php - 如何: persistent PHP session across subdomains

C# 加入列表。 LINQ。无法创建常量类型

c# - 如何获取字符串的一部分

c# - LambdaExpression CompileToMethod

c# - 如何在不使用模拟的情况下使用数据库对项目进行单元测试?

asp.net - 为什么 RazorViewEngine 不接收我的 DisplayTemplate?

php - Facebook iframe 在 IE 中不工作; session /登录问题?