負載均衡服務器Session共享的解決方案

作者: eng308  來源: 博客園  發布時間: 2010-07-26 14:58  閱讀: 4401 次  推薦: 0   原文鏈接   [收藏]  

  在ASP.NET的程序中要使用Session對象時,必須確保頁面的@page指令中EnableSessionState屬性是True或者 Readonly,并且在web.config文件中正確的設置了SessionState屬性。

  ASP.NET中Session的狀態保持是由web.config文件中的標記下的標記的mode屬性來決定的。該屬性有四種可能的值:Off、Inproc、StateServer和SQlServer。

  設為Off會禁用Session。

  Inproc是缺省的設置,這種模式和以前的ASP的會話狀態的方法是類似的,會話的狀態會被保存在ASP.NET進程中,它的優點是顯而易見的:性能。進程內的數據訪問自然會比夸進程的訪問快。然而,這種方法Session的狀態依賴于ASP.NET進程,當IIS進程崩潰或者正常重起啟時,保存在進程中的狀態將丟失。

  為了克服Inproc模式的缺點,ASP.NET提供了兩種進程外保持會話狀態的方法。

  ASP.NET首先提供了提供了一個Windows服務:ASPState,這個服務啟動后,ASP.NET應用程序可以將mode屬性設置為 “SateServer”,來使用這個Windows服務提供的狀態管理方法。

  除了在web.config文件中設置mode屬性為StateServer外,還必須設置運行StateServer服務器的IP地址和端口號。

  1、如果在IIS所在的機器運行StateServer則IP地址就是127.0.0.1,端口號通常是42424.配置如下:

  mode=”StateServer”

  stateConnectionString="tcpip=127.0.0.1:42424"

  2、找一臺服務器作為Session服務器(如IP為:192.168.1.244),啟動其Windows中的ASP.NET State Service(默認的端口號為42424),把啟動類型改為自動;
  3、修改Session服務器注冊表中的項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \aspnet_state\Parameters中的AllowRemoteConnection 鍵的值為1,其中的Port鍵控制ASP.NET State Service的監聽端口;修改后需要重啟ASP.NET State Service才生效;

  4、每臺服務器的web.config 的stateConnectionString都指向這臺服務器。

  使用這種模式,會話狀態的存儲將不依賴IIS進程的失敗或者重啟,會話的狀態將存儲在StateServer進程的內存空間中。

  另一種會話狀態模式是SQLServer模式。這種模式是將會話的狀態保存在SQL Server數據庫中的。使用這種模式前,必須至少有一臺SQL Server服務器,并在服務器中建立需要的表和存儲過程。.NET SDK提供了兩個腳本來簡化這個工作:InstallSqlState.sql和UnInstallSqlState.sql。這兩個文件存放在下面路徑中:

  system drive\WINNT\Microsoft.NET\Framework\version\

  要配置SQL Server 服務器,可以在命令行中運行SQL Server提供的命令行工具osql.exe

  osql -s [server name] -u [user] -p [password]

  例如:

  osql -s (local) -u as -p “”-i InstallSqlState.sql

  做好必要的數據庫準備工作后,將web.config文件中的sessionstate元素的mode屬性改為”sqlserver”,并指定 SQL連接字符串。具體如下:

  mode="SQLServer"

  sqlConnectionString="data source=127.0.0.1;userid=sa;password=;Trusted_Connection=yes"

  使用SQLServer模式處了可以使Session的狀態不依賴于IIS服務器之外,還可以利用SQL Server的集群,使狀態存儲不依賴于單個的SQL Server,這樣就可以為應用程序提供極大的可靠性。

0
0
 
標簽:ASP.NET Session
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()