考慮下列案例:
- 您有多個後端 Web 伺服器主控的網站。
- 您使用 Microsoft 網際網路安全性與加速 ISA Server 2004 發佈網頁伺服器。
- 使用 要求似乎來自原始用戶端] 選項和 [轉寄原始主機標頭,而非實際的一個 [上述指定] 選項來設定網頁發佈規則。
在這種情況下如果從快取正向連線的 Proxy 伺服器背後的用戶端電腦存取該網站可能會收到類似下列的錯誤訊息:
404 找不到。要求的項目可能位於 (12028)
如果網頁發佈 ISA Server 無法建立與 Web 伺服器的連線,就會發生這個問題。
如果外部用戶端會傳送到 ISA Server 在相同的 TCP 連線的電腦要求都有不同的主機標頭,可能就會發生這個問題。如果要求要寄至同一個已發佈的網頁伺服器,也可能會發生這個問題。
在這種情況下 ISA Server 會關閉連線,用於第一次的主機標頭要求,並且會開啟新的連線到已發佈的網頁伺服器,當主機標頭會變更。因為某些 Web 伺服器無法正確處理到達相同的 TCP 連線的不同的主機標頭與傳送的要求,ISA Server 就會開啟 Web 伺服器的新連線。
如果您啟用
要求似乎來自原始用戶端] 選項,相同的來源 IP 和連接埠使用 ISA 伺服器建立第二個 TCP 連線到已發佈的 Web 伺服器時。然後,Web 伺服器可能不回應至第二個 TCP 連線重試,而且可能會收到 < 徵狀 > 一節將說明錯誤訊息。
如果要解決這個問題,執行根據您的情況下列動作:
- ISA Server 2004 標準版小型商務伺服器 2003年高級版上執行的從 Microsoft 下載中心 」 安裝下列 Hotfix:
- ISA Server 2004 標準版不執行 Small Business Server 2003 上和 ISA Server 2004 企業版,安裝 「 Microsoft 知識庫 」 文件 919621 所述的 Hotfix。
919621?
(http://support.microsoft.com/kb/919621/
)
ISA Server 2004 Hotfix 套件的描述: 2006 年 5 月 31,
? (http://support.microsoft.com/kb/919621/)。請注意,資訊,有關指令碼 (啟動套用此 Hotfix 之後執行 」 Microsoft Visual Basic script...句子會維持原狀。套用此 Hotfix 之後,執行本節所述的 Microsoft Visual Basic 指令碼。要這麼做,請您執行下列步驟。
Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已熟悉使用我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能。不過,不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。
- 按一下 [開始],指向 [程式集]、 指向 [附屬應用程式,然後再按一下 [記事本]。
- 複製和下列的程式碼貼到新的 [記事本] 文件,然後將它儲存到具有.vbs 副檔名,例如 AddReuseSessionForDifferentHostHeader.vbs 檔案名稱:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Copyright (c) Microsoft Corporation. All rights reserved.
' THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE
' RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE
' USER. USE AND REDISTRIBUTION OF THIS CODE, WITH OR WITHOUT MODIFICATION, IS
' HEREBY PERMITTED.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' This script adds a new VendorParametersSets under the array root.
' Used to added new parameters that are needed for hotfixes or service packs.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub AddReuseSessionForDifferentHostHeader()
' Create the root obect.
Dim root ' The FPCLib.FPC root object
Set root = CreateObject("FPC.Root")
'Declare the other objects needed.
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( "{143F5698-103B-12D4-FF34-1F34767DEabc}" )
If Err.Number <> 0 Then
Err.Clear
' Add the item
Set VendorSet = VendorSets.Add( "{143F5698-103B-12D4-FF34-1F34767DEabc}" )
CheckError
WScript.Echo "New VendorSet added... " & VendorSet.Name
Else
WScript.Echo "Existing VendorSet found... value- " & VendorSet.Value("ReuseSessionForDifferentHostHeader")
End If
if VendorSet.Value("ReuseSessionForDifferentHostHeader") <> true Then
Err.Clear
VendorSet.Value("ReuseSessionForDifferentHostHeader") = true
If Err.Number <> 0 Then
CheckError
Else
VendorSets.Save false, true
CheckError
If Err.Number = 0 Then
WScript.Echo "Done with ReuseSessionForDifferentHostHeader, saved!"
End If
End If
Else
WScript.Echo "Done with ReuseSessionForDifferentHostHeader, 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
AddReuseSessionForDifferentHostHeader
- 按兩下.vbs 檔案,以執行指令碼。
如果要解決這個問題,使用
來自 ISA Server 電腦似乎要求] 選項而非
來自原始用戶端似乎要求] 選項來設定網頁發佈規則。要這麼做,請您執行下列步驟:
- 啟動 ISA Server 管理工具。
- 展開 [ISA Server 電腦節點,然後按一下 [防火牆原則。
- 您想要設定,[網頁發佈規則上按一下滑鼠右鍵,然後按一下 [內容]。
- 按一下 [到] 索引標籤,按一下 [要求似乎來自 ISA Server 電腦,然後再按一下 [確定]。
- 按一下 [套用] 以儲存所做的變更並更新組態。
附註這項因應措施可能可以解決類似的錯誤所造成的不正確地路由用戶端電腦的 IP 位址,透過 ISA 伺服器傳回的 TCP 流量已發佈的 Web 伺服器。
不同主機標頭時,請停用重複使用的 TCP 連線],執行下列指令碼:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Copyright (c) Microsoft Corporation. All rights reserved.
' THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE
' RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE
' USER. USE AND REDISTRIBUTION OF THIS CODE, WITH OR WITHOUT MODIFICATION, IS
' HEREBY PERMITTED.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' This script removes a VendorParametersSet value.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ReuseSessionForDifferentHostHeader()
' Create the root obect.
Dim root ' The FPCLib.FPC root object
Set root = CreateObject("FPC.Root")
'Declare the other objects needed.
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( "{143F5698-103B-12D4-FF34-1F34767DEabc}" )
If Err.Number <> 0 Then
Err.Clear
WScript.Echo "VendorParametersSet does not exist."
Else
Err.Clear
VendorSet.RemoveValue("ReuseSessionForDifferentHostHeader")
If Err.Number <> 0 Then
CheckError
Else
VendorSets.Save false, true
CheckError
If Err.Number = 0 Then
WScript.Echo "Done removing ReuseSessionForDifferentHostHeader, saved!"
End If
End If
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
ReuseSessionForDifferentHostHeader
通常,您可能會遇到這份文件說明當 ISA 伺服器時無法連絡已發佈的網頁伺服器錯誤。
此 Hotfix 解決非常特殊的案例。套用這個 Hotfix 之前檢查基本連線從 ISA 伺服器到已發佈的伺服器。例如檢查名稱解析 TCP 連線,然後使用建議的解決方法之一來確認問題。
Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。