0

在我的 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);

但是这个解决方案只能在本地主机上工作,不能在服务器上工作......有人有这个问题的替代解决方案吗?或者可以解释为什么我的解决方案不能在服务器上运行?

4

1 回答 1

0

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

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

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

于 2012-05-31T10:29:51.097 回答