我有一个移动网站,其中包含查看主网站的链接。
默认情况下,当移动用户访问我的主站点时,它会检测到移动设备并重定向到移动网站。
进入移动网站后,如果用户点击“查看主网站”,则会创建一个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);
}
}
任何人都能看出为什么会这样吗?
任何帮助都是最受欢迎的。
答案 0 :(得分:1)
您是否尝试过Cookie.Expires = Now.AddYears(1); 或者可能DateTime expires = Now.AddYears(1); Cookie.Expires = expires;
目前您的约会时间似乎正在恶化/做得不多。
答案 1 :(得分:0)
您确定浏览器会将适当的Cookie从子域发送到主域应用程序吗?请使用chrome / firefox开发人员工具等网络请求监视器来查找正在接收和发送的内容。我想由于跨域策略而不会发送cookie。