文章編號: 917265 - 上次校閱: 2007年1月30日 - 版次: 2.5

當 Proxy 伺服器背後的用戶端電腦存取由使用 ISA Server 2004 發佈的網站時,出現錯誤訊息: 「 404 找不到。要求的項目找不到位於 (12028) 」

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

徵狀

考慮下列案例:
  • 您有多個後端 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:
    http://www.microsoft.com/downloads/details.aspx?FamilyId=25BB5F65-4734-4268-B2B1-1606DCEAC06F&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyId=25BB5F65-4734-4268-B2B1-1606DCEAC06F&displaylang=en)
  • 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 技術支援工程師可以協助解釋特定程序的功能。不過,不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。
  1. 按一下 [開始],指向 [程式集]、 指向 [附屬應用程式,然後再按一下 [記事本]。
  2. 複製和下列的程式碼貼到新的 [記事本] 文件,然後將它儲存到具有.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
    
  3. 按兩下.vbs 檔案,以執行指令碼。

其他可行方案

如果要解決這個問題,使用 來自 ISA Server 電腦似乎要求] 選項而非 來自原始用戶端似乎要求] 選項來設定網頁發佈規則。要這麼做,請您執行下列步驟:
  1. 啟動 ISA Server 管理工具。
  2. 展開 [ISA Server 電腦節點,然後按一下 [防火牆原則
  3. 您想要設定,[網頁發佈規則上按一下滑鼠右鍵,然後按一下 [內容]。
  4. 按一下 [] 索引標籤,按一下 [要求似乎來自 ISA Server 電腦,然後再按一下 [確定]
  5. 按一下 [套用] 以儲存所做的變更並更新組態。

    附註這項因應措施可能可以解決類似的錯誤所造成的不正確地路由用戶端電腦的 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 產品確實有此問題。

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