解決網站在負載均衡環境下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.pswp.cn/news/280386.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280386.shtml
英文地址,請注明出處:http://en.pswp.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…