2

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

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

一旦进入移动站点,如果用户随后单击“查看主站点”,它会创建一个 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);
        }
    }

任何人都可以看到为什么会这样吗?

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

4

2 回答 2

1

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

目前,您的约会时间似乎正在溃烂/做得不多。

于 2012-08-02T10:26:07.800 回答
0

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

于 2014-03-29T11:52:28.427 回答