Session中StateServer的用法

本文详细介绍了ASP.NET中SessionState的StateServer模式的配置及应用。通过实例展示如何实现跨站点共享Session,包括Web.config配置文件的具体设置以及必要的全局.asax文件中的初始化处理。
摘要由CSDN通过智能技术生成

近期项目中用到 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值