如何在阻止的cookie上保存mvc3中的会话

时间:2012-05-31 09:12:45

标签: asp.net asp.net-mvc-3

在我的mvc3应用程序中,我将每个用户的数据保存到会话中。

HttpContext.Current.Session["UserName"] = "Jon";

问题出在Safari浏览器中。 默认设置为:“阻止来自第三方和广告商的Cookie”。因此会话未保存。我找到了解决方案:

var ticket = new FormsAuthenticationTicket(
                1,
                "currentUser",
                DateTime.Now,
                DateTime.Now.AddMinutes(30),
                false,
                null);

                string encryptedTicket = FormsAuthentication.Encrypt(ticket);
                var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

                this.Response.Cookies.Add(cookie);

但是此解决方案仅适用于localhost,不适用于服务器... 有没有人有这个问题的替代解决方案?或者可以解释为什么我的解决方案无法在服务器上运行?

1 个答案:

答案 0 :(得分:0)

尝试将Cookie的Domain属性设置为与您的工作服务器所在域的名称完全匹配,如下所示:

var cookie = new HttpCookie(...
cookie.Domain = "Microsoft.com";

一旦你这样做,你的cookie就是第一方cookie(而不是第三方cookie)。