文章編號: 325056 - 上次校閱: 2004年4月27日 - 版次: 3.2

PRB:如果您使用 SqlServer 或 StateServer 工作階段模式,Web 伺服陣列中的工作階段狀態會遺失

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

徵狀

當您在負載平衡的 Web 伺服陣列環境執行 ASP.NET Web 應用程式時,如果使用 SqlServer 或 StateServer 工作階段模式,工作階段狀態可能會遺失。

發生的原因

如果要使 Web 伺服陣列中的不同網頁伺服器保持相同的工作階段狀態,Web 伺服陣列中所有網頁伺服器的 Microsoft Internet Information Services (IIS) metabase 都必須含有相同的網站應用程式路徑 (如,\LM\W3SVC\2)。大小寫也必須相同,因為應用程式路徑須區分大小寫。

在網頁伺服器上,ASP.NET 應用程式所在網站的執行個體識別碼可能是 2 (其中應用程式路徑為 \LM\W3SVC\2)。在另一個網頁伺服器上,網站的執行個體識別碼可能是 3 (其中應用程式路徑為 \LM\W3SVC\3)。因此,Web 伺服陣列中各網頁伺服器的應用程式路徑是不同的。 如需有關如何檢查網站應用程式路徑的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
240225? (http://support.microsoft.com/kb/240225/ ) Description of Adsutil and MetaEdit Used to Modify the Metabase

解決方案

如果要以其他可行方案解決此問題,請在 IIS metabase 中,為 Web 伺服陣列中所有的網頁伺服器,同步化網站的應用程式路徑。請確定大小寫完全相同,因為網站應用程式的路徑須區分大小寫。

注意 Microsoft 建議您在變更 IIS metabase 前先備份。 如需其他詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
302573? (http://support.microsoft.com/kb/302573/ ) HOW TO:Back Up and Restore IIS
如果要同步化網站的應用程式路徑,請使用下列方法:
  • 使用程式碼修改 IIS metabase。
    1. 建立一個文字檔案,然後將檔案命名為 Moveinstance.vbs。
    2. 將下列指令碼加到 Moveinstance.vbs 中,修改成使用相同的網站執行個體識別碼:
      Dim WebService
      Dim oldstr
      Dim newstr
      Dim args
      Set args = WScript.Arguments
      If args.Count < 1 Then
          Wscript.Echo "Must have original instance id and new instance id" &     chr(10) & chr(13) & _
          "usage:  moveinstance.vbs 1 5"  & chr(10) & chr(13) & _
      "Moves instance 1 to instance 5"
          WScript.Quit()
      End If
      Set WebService = GetObject("IIS://LocalHost/W3SVC")
      oldstr = args(0) 'old instance
      newstr = args(1) 'new instance
      WebService.MoveHere oldstr,newstr
      WebService.SetInfo
      Set WebService = nothing
      Set args=nothing
      WScript.echo "DONE"
      						
    3. 儲存 Moveinstance.vbs。
    4. 從上一步驟中儲存 .vbs 檔案的相同位置上,使用命令提示字元執行指令檔。

      例如,在命令提示字元中鍵入 cscript moveinstance.vbs 1 5。這樣會將 Metabase 中的網站執行個體識別碼從 1 變更為 5。

      注意 請確定您指派給網站上的新執行個體識別碼尚未指派給另一個網站,否則可能會導致不可靠的結果。
  • 使用「Microsoft 知識庫」文件 Q24225 中描述的任何工具修改 Metabase,以同步化網站應用程式路徑。 如需其他詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    240225? (http://support.microsoft.com/kb/240225/ ) Description of Adsutil and MetaEdit Utilities Used to Modify the Metabase
注意 使用 StateServer 模式時,請確認 Web 伺服陣列中所有 Machine.config 檔案的 <machineKey> 區段,都有相同的機碼。 如需其他詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
312906? (http://support.microsoft.com/kb/312906/ ) HOW TO:Create Keys by Using Visual C# .NET for Use in Forms Authentication
313091? (http://support.microsoft.com/kb/313091/ ) HOW TO:Create Keys by Using Visual Basic .NET for Use in Forms Authentication

這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
關鍵字:?
kbconfig kbprb kbstate KB325056
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。