【问题标题】:Cookie Value is always NullCookie 值始终为 Null
【发布时间】:2012-08-02 10:05:13
【问题描述】:

我有一个带有查看主站点链接的移动站点。

默认情况下,当移动用户访问我的主站点时,它会检测到移动设备并重定向到移动站点。

一旦在移动网站上,如果用户点击“查看主站点”,它会创建一个 cookie 并重定向回主站点。主站点检测到 cookie,因此不会将它们重定向回来;它总是接受主站点作为他们的首选。

问题是,在主站点上,它可以检测到 cookie,但值始终为 null,并且过期时间始终为 DateTime.MinValue。

移动网址 = mobile.mysite.co.uk

主站点 = mysite.co.uk

这是我的代码...

从移动网站链接到主网站

    public ActionResult ViewMainSite()
    {
        string CookieValue = "Always Show the Main Site";
        HttpCookie Cookie = new HttpCookie("ShowMainSite");

        // Set the cookie value and expiry.
        Cookie.Value = CookieValue;
        Cookie.Expires = DateTime.Now.AddYears(1);

        // Add the cookie.
        Response.Cookies.Add(Cookie);

        return Redirect("mainSiteURL");
    }

主站点操作过滤器 - 检测移动用户

        /// <summary>
    /// Redirect If Mobile Action filter class
    /// </summary>
    public class RedirectIfMobile : ActionFilterAttribute
    {
        /// <summary>
        /// override the OnactionExecuting Method
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
                // check to see if the have the main site cookie
                var Cookie = filterContext.HttpContext.Response.Cookies.Get("ShowMainSite");

                if (Cookie != null)
                {
                    if (Cookie.Value == null || Cookie.Expires < DateTime.Now)
                    {
                        filterContext.HttpContext.Response.Redirect("MobileURL");
                    }
                }

            base.OnActionExecuting(filterContext);
        }
    }

谁能明白为什么会这样?

任何帮助都是最受重视的。

【问题讨论】:

  • 我的事情你不能添加 cookie 并在同一个标​​题上进行重定向。当您想在页面上保存 cookie 时,您不能使用重定向。如果我错了,请告诉我。

标签: c# asp.net-mvc


【解决方案1】:

你试过 Cookie.Expires = Now.AddYears(1); 或者可能 DateTime expires = Now.AddYears(1); Cookie.Expires = 过期;

目前你的约会时间似乎正在溃烂/做得不是很多。

【讨论】:

  • 使用 DateTime.Now.AddYears(1) = {02/08/2013 11:34:50}
  • 我知道,但你现在创建了变量,然后什么也没做。也可能是一个可以通过变量/对象引用修复的错误,有时当首先存储到变量时事情会更好。这有点奇怪,但已知会发生类似的奇怪异常。
  • 我知道你的意思,它是一个什么也没做的变量,我删除了它,但它肯定不是问题的原因
  • 我知道这不是原因,这只是在试图找出原因时的观察。您是否尝试将变量分配给值 Now.AddYears(1),然后将 Cookie.Expires 分配给该变量?这听起来很奇怪,但有时出于某种原因这样的事情会奏效。
【解决方案2】:

您确定浏览器将适当的 cookie 从子域发送到主域应用程序吗?请使用网络请求监视器(例如 chrome/firefox 开发者工具)来找出确切接收和发送的内容。我猜是由于跨域策略,没有发送 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多