解决网站在负载均衡环境下SESSION丢失的问题

在WEB场中,动态网页往往会因为几台主机做了负载而产生SESSION丢失的问题,网上也有很多的介绍,我这里只将我经历的过程给大家分享一下:

系统要运行在负载平衡的 Web 场环境中,而系统配置文件web.config中的Session状态却设置为InProc(即在本地存储会话状态),导至在用户访问量大时,Session常经超时的情况。引起这个现象的原因主要是因为用户通过负载平衡IP来访问WEB应用系统,某段时候在某台服务器保存了Session 的会话状态,但在其它的WEB前端服务器中却没有保存Session的会话状态,而随着并发量的增大,负载平衡会当作路由随时访问空闲的服务器,结果空闲的服务器并没有之前保存的Session会话状态。
解决办法:
1.当您在负载平衡的 Web 场环境中运行 ASP.NET Web 应用程序时,一定要使用 SqlServer 或 StateServer 会话状态模式,在项目中我们基于性能考虑并没有选择SqlServer模式来存储Session状态,而是选择一台SessionStateServer 服务器来用户的Session会话状态。我们要在系统配置文件web.config中设置如下:
<sessionState mode="StateServer" cookieless="false" timeout="240" stateConnectionString="tcpip=192.168.0.1:42424" stateNetworkTimeout="14400" />
这里的红字体的IP一定要是同域的一台机器,在这台机器上进行第二步的操作,同时将其注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi ces\aspnet_state\Parameter
s\AllowRemoteConnection的键值改为1,然后重启本机的ASP.NET State Service服务
还要添加一项
<machineKey validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/>
如何生成machineKey?
按照MSDN的标准说法:“对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。”也就是说Asp.Net的很多加密,都是依赖于machineKey里面的值,例如Forms 身份验证 Cookie、ViewState的加密。默认情况下,Asp.Net的配置是自己动态生成,如果单台服务器当然没问题,但是如果多台服务器负载均衡,machineKey还采用动态生成的方式,每台服务器上的machinekey值不一致,就导致加密出来的结果也不一致,不能共享验证和ViewState,所以对于多台服务器负载均衡的情况,一定要在每台站点配置相同的machineKey。
machineKey生成的算法:
1
2
3
4
5
6
7
8
9
10
11
12
13
validationKey = CreateKey(20);
decryptionKey = CreateKey(24);
protected string CreateKey(int len)
{
byte[] bytes = new byte[len];
new RNGCryptoServiceProvider().GetBytes(bytes);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < bytes.Length; i++)
{
sb.Append(string.Format("{0:X2}",bytes[i]));
}
return sb.ToString();
}
附参考的matchineKey配置:
1
2
3
4
5
6
7
<?xml version="1.0"?>
<configuration>
<system.web>
<machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" 
decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>
</system.web>
</configuration>
2. 我们同时还要在SessionStateServer 服务器中启动ASP.NET State Service服务,具体设置:控制面板>>管理工具>>服务>>ASP.NET State Service,把它设为自动启动即可。
3. 每台前端WEB服务的Microsoft“Internet 信息服务”(IIS)设置
要在 Web 场中的不同 Web 服务器间维护会话状态,Microsoft“Internet 信息服务”(IIS) 配置数据库中 Web 站点的应用程序路径(例如,\LM\W3SVC\2)与 Web 场中所有 Web 服务器必须相同。大小写也必须相同,因为应用程序路径是区分大小写的。在一台 Web 服务器上,承载 ASP.NET 应用程序的 Web 站点的实例 ID 可能是 2(其中应用程序路径是 \LM\W3SVC\2)。在另一台 Web 服务器上,Web 站点的实例 ID 可能是 3(其中应用程序路径是 \LM\W3SVC\3)。因此,Web 场中的 Web 服务器之间的应用程序路径是不同的。我们必须使Web 场Web 站点的实例 ID 相同即可。你可以在IIS中把某一个WEB配置信息保存为一个文件,其他Web 服务器的IIS配置可以来自这一个文件。您如果想知道具体的设置请访问Microsoft Support网站:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;325056
分类: ASP.NET
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/4319659.html,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何从手机或PC将游戏下载到PlayStation 4

PlayStation 4 games can be huge, and take hours to download. Thankfully, you can start downloading games even when you’re away from home. All you need is Sony’s official smartphone app, or a web browser on any PC. PlayStation 4游戏可能非常庞大&#xff0c…

CML更新 | 新增百度小程序、支付宝小程序

祝所有工程师小伙伴开工大吉&#xff0c;Beatles 团队已经开始忙碌起来了。 几个事情要向诸位汇报一下&#xff1a; 一、新增百度小程序、支付宝小程序 发布alpha版本支持百度小程序、支付宝小程序&#xff0c;已有项目可以无缝直接运行在新增平台&#xff0c;欢迎安装试用&…

C#中4种深拷贝方法介绍

概述为什么要用到深拷贝呢&#xff1f;比如我们建了某个类Person&#xff0c;并且实例化出一个对象&#xff0c;然后&#xff0c;突然需要把这个对象复制一遍&#xff0c;并且复制出来的对象要跟之前的一模一样&#xff0c;来看下我们一般会怎么做。1、利用反射实现public stat…

kaggle入门项目:Titanic存亡预测(三)数据可视化与统计分析

---恢复内容开始--- 原kaggle比赛地址&#xff1a;https://www.kaggle.com/c/titanic 原kernel地址&#xff1a;A Data Science Framework: To Achieve 99% Accuracy Step 4: Perform Exploratory Analysis with Statistics 使用描述性与图表分析数据&#xff0c;重点在于数据可…

docker遇到问题归纳

/bin/sh^M: bad interpreter #在win下编辑的时候&#xff0c;换行结尾是\n\r &#xff0c; 而在linux下 是\n&#xff0c;所以才会有 多出来的\r #可以用以下方式解决先在控制台cd到报错的目录#编辑报错的那个文件 vi xxx.sh#利用如下命令查看文件格式 :set ff 或 :set filef…

faster rcnn训练过程讲解

http://blog.csdn.net/u014696921/article/details/60321425

firefox 扩展_如何检查您的扩展程序是否将停止与Firefox 57一起使用

firefox 扩展With Firefox 57, scheduled for release in November 14, 2017, Mozilla will end support for legacy extensions, and only support newer WebExtensions. Here’s how to check if your extensions will stop working—and how to keep using them after Novem…

《构建之法》 读书笔记

《构建之法》 读书笔记 娄雨禛 PB16060356 第一部分 关于结对编程的体悟与实践 在结对编程这一部分我曾讲过很多的注意点&#xff0c;比如代码变量命名风格、缩进风格、注释风格&#xff0c;前后语句次序风格&#xff0c;等等。然而这里还有一些新的东西。代码风格这个老掉牙的…

边缘服务网格 osm-edge

本文篇幅稍长&#xff0c;阅读本文将了解以下内容&#xff1a;•什么是 osm-edge 及其产生背景•边缘计算与中心云计算的差异&#xff0c;以及带来的挑战•osm-edge 的设计及采用的技术•5 分钟快速体验边缘服务网格关于 osm-edgeosm-edge 是针对边缘计算环境设计的服务网格&am…

powershell获取exe文件返回值

一、目的 1.powershell能简单写一些小脚本&#xff0c;不需要exe开发这么笨重。 2.在windows实现某个特定功能&#xff0c;做成一个exe能方便查看管理。 二、实现 1.C# code 运行结束加入返回值 Environment.ExitCode 1; //自定义数字 2.powershell 调用并获取 需要增加…

自定义ViewGroup实现仿微信图片选择器

先求一个windows版本的gif制作工具&#xff01;&#xff01;&#xff01; 这个代码只是做了简单的选择功能&#xff0c;图片的压缩与展示没做。可以自己在接口的方法中去实现。 写这个自定义view的初衷是为了学习LayoutParams&#xff0c;参考博客&#xff1a;http://www.jians…

[PHP] 多表外连接性能测试及优化

原文&#xff1a;https://blog.csdn.net/tang_huan_11/article/details/41925639 版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请附上博文链接&#xff01;转载于:https://www.cnblogs.com/0616--ataozhijia/p/10364188.html

活水亭观书有感其一_如何将iPad置于“信息亭”模式,将其限制为单个应用程序...

活水亭观书有感其一An iPad makes a great “kiosk” device–a tablet restricted to one specific app for your home or small business. You can create a makeshift kiosk using the Guided Access feature, or enable Single App Mode for a true kiosk environment. iPa…

Shell字符串

一 介绍 shell程序的字符串可以用单引号&#xff0c;也可以用双引号&#xff0c;也可以不用&#xff0c;字符串是最有用的数据类型。 二 单引号 单引号字符串的限制&#xff1a; 》单引号内的内容原样输出&#xff0c;单引号字符串的变量是无效的。 》单引号内不能出现单引号&a…

powershell 特殊符号处理

显示字符串有双引号 “ 两个双引号产生一个双引号&#xff0c;这里不包括最外层的双引号。 $a"PowerShell" """My name is $a"",this program said." 使用转义字符 转义序列由反引号定义&#xff0c;也就是键盘F1下面与波浪线同键…

如何使用 System.Text.Json 序列化 DateTimeOffset 为 Unix 时间戳

在 .NET 中&#xff0c;日期和时间通常使用 DateTime 或 DateTimeOffset 来表示。这两种数据类型都可以表示日期和时间&#xff0c;但它们之间有一些明显的区别。DateTime 是不带时区信息的&#xff0c;而 DateTimeOffset 是带时区偏移量的&#xff0c;可以用来表示一个特定的时…

IDEA 学习笔记之 安装和基本配置

安装和基本配置&#xff1a; 下载&#xff1a;https://www.jetbrains.com/idea/download/#sectionwindows 下载Zip安装包&#xff1a; 基础知识&#xff1a; Eclipse的工作区IDEA的项目 Eclipse的项目IDEA的模块 修改信息提示&#xff1a;Alt/ 关闭当前窗口&#xff1a;CtrlW 自…

大厂高级前端面试题答案

阿里 使用过的koa2中间件https://www.jianshu.com/p/c1e... koa-body原理https://blog.csdn.net/sinat_1... 有没有涉及到Clusterhttp://nodejs.cn/api/cluster.... 介绍pm2PM2是node进程管理工具&#xff0c;可以利用它来简化很多node应用管理的繁琐任务&#xff0c;如性能监控…

js app缓存自动刷新_如何通过清除缓存来刷新App Store中的内容

js app缓存自动刷新Are you finding that you’re not seeing new apps on the App Store, or that updates to apps won’t go away even after you’ve installed the updates? Here’s a simple fix. 您是否发现自己在App Store上没有看到新的应用程序&#xff0c;或者即使…

Office Web APP预览如何去掉顶部版权标志“Microsoft Office Web Apps”

在Office Web APP的预览会涉及4中类型的文 件&#xff1a;Word、Excel、PowerPoint、PDF&#xff0c;不同的类型在预览时调用的文件是不一样的&#xff0c;其中Word和 PDF调用的是同一个文件。每个预览的页面都有对应的CSS文件&#xff0c;如下&#xff1a;PowerPointC:\Progra…