Cookie值始终为空

时间:2012-08-02 10:05:13

标签: c# asp.net-mvc

我有一个移动网站,其中包含查看主网站的链接。

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

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

任何人都能看出为什么会这样吗?

任何帮助都是最受欢迎的。

2 个答案:

答案 0 :(得分:1)

您是否尝试过Cookie.Expires = Now.AddYears(1); 或者可能DateTime expires = Now.AddYears(1); Cookie.Expires = expires;

目前您的约会时间似乎正在恶化/做得不多。

答案 1 :(得分:0)

您确定浏览器会将适当的Cookie从子域发送到主域应用程序吗?请使用chrome / firefox开发人员工具等网络请求监视器来查找正在接收和发送的内容。我想由于跨域策略而不会发送cookie。