首页 > 代码库 > Session中StateServer的用法
Session中StateServer的用法
近期项目中用到 Session的StateServer模式,我们知道sessionState有四种模式:off,inProc,StateServer,SqlServer。 而StateServer 是将session存储到内存中的,使用此种方式必须启动ASP.NET 状态windows服务。StateServer 对我最大的感觉就部署在同一个服务器的站点,只要配置一致,那么都可以对同一个Session 值进行访问。也就是Session可以 跨站点访问。下面来说用法
站点配置如下:
Web.config配置
<pre name="code" class="csharp"> <system.web> <authentication mode="Forms"> <forms name="SSOForm" loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" timeout="2880" domain="test.com" /> </authentication> <!-- 开发与测试使用服务器内存记录 asp.net 状态 --> <!--<sessionState cookieName="AeroSessionId" mode="InProc" cookieless="false" timeout="100" />--> <!-- 正式环境使用专门的 asp.net 状态服务器来管理 asp.net 状态 --> <sessionState cookieName="SessionId2" cookieless="false" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="200" /> <!-- 网络之间的验证键 --> <machineKey validationKey="9912131415161718190a0b0c0d0e0f1011121314" decryptionKey="99225577bbaa9988" validation="SHA1" /> </system.web>
全局文件global 重写Init事件
public override void Init() { //session内部存储key的前缀 var sessionStateStoreProvider = typeof(HttpSessionState).Assembly.GetType("System.Web.SessionState.OutOfProcSessionStateStore"); var uriBaseField = sessionStateStoreProvider.GetField("s_uribase", BindingFlags.Static | BindingFlags.NonPublic); uriBaseField.SetValue(null, FormsAuthentication.CookieDomain); base.Init(); }
然后其他站点配置同样的就可以互相对Sessionji
Session中StateServer的用法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。