FIX: 發生時,就會發生錯誤的網頁伺服器讀取從透過 ISA Server 2006 用戶端傳來的 Cookie

文章翻譯 文章翻譯
文章編號: 968217 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

考慮下列案例:
  • 您使用 Microsoft 網際網路安全性與加速 ISA Server 2006 發佈 Web 應用程式,會使用 Cookie。
  • ISA Server 重建從用戶端傳送的 Cookie,與然後將 Cookie 傳送到 Web 伺服器。
在這種情況下 Web 伺服器無法閱讀該 Cookie,並接著會產生錯誤。

附註使用 ISA Server 2006 發佈 Adobe ColdFusion 8 應用程式時在其中可能會發生這個問題的其中一個範例。

發生的原因

當 ISA Server 會重新建置用戶端所傳送的 Cookie 資料時,它使用分號 (;) 和空格字元來分隔 Cookie 中的每個欄位。不過時 Cookie 會重組,, 這個字元組合被附加至 Cookie 資料集的結尾。這會造成 < 徵狀 > 一節所述的錯誤。

解決方案

如果要解決這個問題,請依照下列步驟執行:
  1. 安裝 Hotfix 彙總套件所說明下列 「 Microsoft 知識庫 」 文件中:
    970443ISA Server 2006 Hotfix 套件的描述: ISA Server 2006 Hotfix 套件的描述: 2009 4 月 21,
  2. 啟動 [記事本]。
  3. 將下列指令碼貼入 [記事本] 檔案
    Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"
    Const SE_VPS_NAME = "DoNotAppendLastSeparator"
    Const SE_VPS_VALUE = true
    
    Sub SetValue()
    
        ' Create the root object.
        Dim root  ' The FPCLib.FPC root object
        Set root = CreateObject("FPC.Root")
    
        'Declare the other required objects.
        Dim array       ' An FPCArray object
        Dim VendorSets  ' An FPCVendorParametersSets collection
        Dim VendorSet   ' An FPCVendorParametersSet object
    
        ' Get references to the array object
        ' and the network rules collection.
        Set array = root.GetContainingArray
        Set VendorSets = array.VendorParametersSets
    
        On Error Resume Next
        Set VendorSet = VendorSets.Item( SE_VPS_GUID )
    
        If Err.Number <> 0 Then
            Err.Clear
    
            ' Add the item
            Set VendorSet = VendorSets.Add( SE_VPS_GUID )
            CheckError
            WScript.Echo "New VendorSet added... " & VendorSet.Name
    
        Else
            WScript.Echo "Existing VendorSet found... value- " &  VendorSet.Value(SE_VPS_NAME)
        End If
    
        if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then
    
            Err.Clear
            VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE
    
            If Err.Number <> 0 Then
                CheckError
            Else
                VendorSets.Save false, true
                CheckError
    
                If Err.Number = 0 Then
                    WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"
                End If
            End If
        Else
            WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"
        End If
    
    End Sub
    
    Sub CheckError()
    
        If Err.Number <> 0 Then
            WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description
            Err.Clear
        End If
    
    End Sub
    
    SetValue
  4. 儲存這個 [記事本] 檔案,只要使用.vbs 副檔名。比方說使用下列名稱來儲存這個檔案:
    DoNotAppendLastSeparator.vbs
  5. 按兩下.vbs 檔案,以執行它。

Hotfix 移除資訊


重要您在本文中移除提到的 Hotfix 之前您必須先執行下列指令碼以移除 DoNotAppendLastSeparator 值。
Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"
Const SE_VPS_NAME = "DoNotAppendLastSeparator"
Const SE_VPS_VALUE = false

Sub SetValue()

    ' Create the root object.
    Dim root  ' The FPCLib.FPC root object
    Set root = CreateObject("FPC.Root")

    'Declare the other required objects.
    Dim array       ' An FPCArray object
    Dim VendorSets  ' An FPCVendorParametersSets collection
    Dim VendorSet   ' An FPCVendorParametersSet object

    ' Get references to the array object
    ' and the network rules collection.
    Set array = root.GetContainingArray
    Set VendorSets = array.VendorParametersSets

    On Error Resume Next
    Set VendorSet = VendorSets.Item( SE_VPS_GUID )

    If Err.Number <> 0 Then
        Err.Clear

        ' Add the item
        Set VendorSet = VendorSets.Add( SE_VPS_GUID )
        CheckError
        WScript.Echo "New VendorSet added... " & VendorSet.Name

    Else
        WScript.Echo "Existing VendorSet found... value- " &  VendorSet.Value(SE_VPS_NAME)
    End If

    if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then

        Err.Clear
        VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE

        If Err.Number <> 0 Then
            CheckError
        Else
            VendorSets.Save false, true
            CheckError

            If Err.Number = 0 Then
                WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"
            End If
        End If
    Else
        WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"
    End If

End Sub

Sub CheckError()

    If Err.Number <> 0 Then
        WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description
        Err.Clear
    End If

End Sub

SetValue

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

?考

如需有關軟體更新術語的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684用來描述 Microsoft 軟體更新標準術語的說明

屬性

文章編號: 968217 - 上次校閱: 2009年5月28日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft Internet Security and Acceleration Server 2006 Service Pack 1?應用於:
    • Microsoft Internet Security and Acceleration Server 2006 Enterprise Edition
關鍵字:?
kbmt kbexpertiseinter kbfix kbsurveynew kbqfe KB968217 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:968217
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com