国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

asp.net基于StateServer的二級域名共享session

2019-11-17 02:06:01
字體:
來源:轉載
供稿:網友

asp.net基于StateServer的二級域名共享session

備注:親自試驗有效,如果網友有通過下面的教程未實現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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 治县。| 遵化市| 颍上县| 万盛区| 温泉县| 小金县| 陆川县| 高雄市| 拉萨市| 大化| 成安县| 明溪县| 赫章县| 遂宁市| 中方县| 石棉县| 屯门区| 区。| 普宁市| 华宁县| 满城县| 肥城市| 通化县| 峨山| 莒南县| 南康市| 温泉县| 万载县| 潢川县| 威信县| 南澳县| 宁强县| 舒兰市| 佳木斯市| 若羌县| 敖汉旗| 福泉市| 柯坪县| 岳池县| 屯留县| 梁山县|