首页 > 网站 > Nginx > 正文

nginx 负载均衡 多站点共享Session

2024-08-30 12:27:13
字体:
来源:转载
供稿:网友
多站点共享Session常见的作法有:

•使用.net自动的状态服务(Asp.net State Service);
•使用.net的Session数据库;
•使用Memcached。
•使用Cookie方式实现多个站点间的共享(这种方式只限于几个站点都在同一域名的情况下);
这里我们就 演练一下 以数据库的形来存储Session,来实现多站点共享Session。

首先我们 建好一下站点,如下图:

 

Default.aspx 

其中 有二个Button  ,SetSession 主要是用于给一个 Session 赋值(如:Session["ShareValue"] = “abcd”) ,

GetSession 主要就是获得 一个 Session 值。

具体代码如下:

  

 代码部分就这么多就行了…

下面就是要配置一下 Web.config了 , 其实主要就是在 <system.web>
这个节点中 增加 machineKey 及 sessionState 这两个节点,
1.增加machineKey 主要作用是:
“按照MSDN的标准说法:“对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。”也就是说Asp.Net的很多加密,都是依赖于machineKey里面的值,例如Forms 身份验证 Cookie、ViewState的加密。默认情况下,Asp.Net的配置是自己动态生成,如果单台服务器当然没问题,但是如果多台服务器负载均衡,machineKey还采用动态生成的方式,每台服务器上的machinekey值不一致,就导致加密出来的结果也不一致,不能共享验证和ViewState,所以对于多台服务器负载均衡的情况,一定要在每台站点配置相同的machineKey。“ ,具体可以查一下其它资料。
2.增加 sessionState 主要是让 Session 保存在数据库中。
具体配置如下:

代码如下:
<machineKey validationKey="86B6275BA31D3D713E41388692FCA68F7D20269411345AA1C17A7386DACC9C46E7CE5F97F556F3CF0A07159659E2706B77731779D2DA4B53BC47BFFD4FD48A54"
decryptionKey="9421E53E196BB56DB11B9C25197A2AD470638EFBC604AC74CD29DBBCF79D6046"
validation="SHA1" decryption="AES"/>
<sessionState mode="SQLServer" sqlConnectionString="Data Source=PC-07195;Initial Catalog=AWBUISession;Persist Security Info=True;User ID=jins;Password=js@#$1234" allowCustomSqlDatabase="true" cookieless="false" timeout="100"/>


网站部分 这样就好了。。。 下面就是要配置据库了…..

数据库配置:
使用aspnet_regsql.exe工具
ASP.NET 2.0版本后微软提供了aspnet_regsql.exe工具可以方便的配置Session数据库.该工具位于 Web 服务器上的"系统根目录/Microsoft.NET/Framework/版本号"文件夹中.

使用举例:

aspnet_regsql.exe -S . -U sa -P 123456 -ssadd -sstype p
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表