備注:親自試驗有效,如果網友有通過下面的教程未實現session共享的,歡迎留言說明你遇到的問題。必有回復。
最近為實現的二級域名共享session糾結好久。網上的很多實現的方法試了都不行,查了很久才找到了實現的方法。在這里記錄下,以備以后所需。
二級域名共享session有多種實現方法:第一種依賴于cookie。第二種直接共享session。
我這里分享的是第二種直接共享session。session的存儲方法有三種InPRoc, StateServer, SQLServer。
這里分享的基于StateServer的存儲方試。
實現的思路:讓主域名和二級域名的ASP.NET_SessionId 保持一致。
實現的步驟:
第1步.把sessionState的存儲方式改為:StateServer,默認是InProc。tcpip=127.0.0.1:42424 這段是指本機的意思。我試驗的是主域名和二級域名都在都一臺服務器上。如下圖紅色框框區域:

第2步.在system.web結點下添加結點<httpCookies domain=".test.com"/> ,這里test.com改為你自己的域名。這個結點的功能就是實現ASP.NET_SessionId 保持一致。

查看ASP.NET_SessionId的方法可以用google瀏覽器打開網頁,然后F12,如下面板查看ASP.NET_SessionId

第3步在Global.asax中添加如下代碼。
public override void Init() { base.Init(); foreach (string moduleName in this.Modules) { string appName = "APPNAME"; IHttpModule module = this.Modules[moduleName]; SessionStateModule ssm = module as SessionStateModule; if (ssm != null) { System.Reflection.FieldInfo storeInfo = typeof(SessionStateModule).GetField("_store", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); SessionStateStoreProviderBase store = (SessionStateStoreProviderBase)storeInfo.GetValue(ssm); if (store == null)//In IIS7 Integrated mode, module.Init() is called later { System.Reflection.FieldInfo runtimeInfo = typeof(HttpRuntime).GetField("_theRuntime", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); HttpRuntime theRuntime = (HttpRuntime)runtimeInfo.GetValue(null); System.Reflection.FieldInfo appNameInfo = typeof(HttpRuntime).GetField("_appDomainAppId", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); appNameInfo.SetValue(theRuntime, appName); } else { Type storeType = store.GetType(); if (storeType.Name.Equals("OutOfProcSessionStateStore")) { System.Reflection.FieldInfo uribaseInfo = storeType.GetField("s_uribase", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); uribaseInfo.SetValue(storeType, appName); } } } } }OK,主域名和二級域名都實現上面的三個步驟就可以了。本文為拎壺充原創文章,轉載請注明原文地址:http://m.survivalescaperooms.com/liaohuolin/p/4502554.html

新聞熱點
疑難解答