最近项目遇到要共享cookie的问题,本来后台保存session用的是Redis来保存数据的。所以只需要2个站点发的ASP.NET_SessionId是相同的就可以,并且它的Domain 是父级域名。实现code:
protected void Session_Start(object sender, EventArgs e) { Response.Cookies["ASP.NET_SessionId"].Value = Session.SessionID.ToString(); Response.Cookies["ASP.NET_SessionId"].Domain = ".aa.com"; }
网上有类似参考地址:Asp.Net集群中Session共享
很多时候项目的cookie name 都是需要替换默认的ASP.NET_SessionId(需要读取配置),同时我们在开发的时候也不知道具体的父级域名(需要用正则表达式),所以具体实现code如下
protected void Session_Start(object sender, EventArgs e) { SessionStateSection config = (SessionStateSection)WebConfigurationManager.GetSection("system.web/sessionState"); string cookieName = config.CookieName; Response.Cookies[cookieName].Value = Session.SessionID.ToString(); string url = Request.Url.ToString(); Regex reg = new Regex("([^.]*).([^.]*).com"); Match m = reg.Match(url); if (m.Groups.Count > 2) { Response.Cookies[cookieName].Domain = $".{m.Groups[2].Value}.com"; } }