Error message when client computers that are behind a proxy server access Web sites that are published by using ISA Server 2004: “404 Not Found. The requested item could not be located (12028)”

This article has been archived. It is offered "as is" and will no longer be updated.
SYMPTOMS
Consider the following scenario:
  • You have multiple Web sites that are hosted on a back-end Web server.
  • You publish the Web server by using Microsoft Internet Security and Acceleration (ISA) Server 2004.
  • You use the Requests appear to come from original client option and the Forward the Original host header instead of the actual one [specified above] option to configure the Web publishing rule.
In this scenario, if you access the Web site from a client computer that is behind a proxy server that caches forward connections, you may receive an error message that resembles the following:
404 Not Found. The requested item could not be located (12028)
CAUSE
This problem occurs if the Web publishing ISA Server cannot establish a connection to the Web server.

This problem may occur if external client computer requests that are sent to the ISA Server on the same TCP connection have different host headers. This problem may also occur if the requests are addressed to the same published Web server.

In this scenario, ISA Server closes the connection that is used for the first host header request and opens a new connection to the published Web server when the host header changes. ISA Server opens new connections to the Web server because some Web servers incorrectly handle requests that are sent with different host headers that arrive on the same TCP connection.

If you enable the Requests appear to come from original client option, the same source IP and port is used by the ISA server when establishing the second TCP connection to the published Web server. Then, the Web server may not respond to the second TCP connection try and you may receive the error message that the "Symptoms" section describes.
RESOLUTION
To resolve this problem, do the following as appropriate for your situation: • (http://support.microsoft.com/kb/919621/). Note that the info about the script (the sentence starting "After you apply the hotfix, run the Microsoft Visual Basic script..." remains as it is. After you apply the hotfix, run the Microsoft Visual Basic script that is described in this section. To do this, follow these steps.

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
  1. Click Start, point to Programs, point to Accessories, and then click Notepad.
  2. Copy and paste the following code into a new Notepad document, and then save it to a file name with a .vbs extension such as 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. Double-click the .vbs file to run the script.
WORKAROUND
To work around this problem, use the Requests appear to come from the ISA Server computer option instead of Requests appear to come from original client option to configure the Web publishing rule. To do this, follow these steps:
  1. Start the ISA Server Management tool.
  2. Expand the ISA Server computer node, and then click Firewall Policy.
  3. Right-click the Web publishing rule that you want to configure, and then click Properties.
  4. Click the To tab, click Requests appear to come from the ISA Server computer, and then click OK.
  5. Click Apply to save the changes and update the configuration.

    Note This workaround may resolve similar errors that are caused by the published Web server incorrectly routing return TCP traffic to the client computer IP address through the ISA server.
MORE INFORMATION
To disable the reuse of TCP connections when the host header is different, run the following script:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 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 IfEnd SubSub CheckError()    If Err.Number <> 0 Then        WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description        Err.Clear    End IfEnd SubReuseSessionForDifferentHostHeader
Typically, you may experience the error that this article describes when the ISA server is unable to contact the published Web server.

This hotfix addresses a very specific scenario. Before you apply this hotfix, check the basic connectivity from the ISA server to the published server. For example, check name resolution, TCP connectivity, and then use one of the suggested workarounds to confirm the problem.
STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
Properties

Article ID: 917265 - Last Review: 12/09/2015 05:18:34 - Revision: 2.5

  • Microsoft Internet Security and Acceleration Server 2004 Standard Edition
  • Microsoft Internet Security and Acceleration Server Enterprise Edition Service Pack 2
  • kbnosurvey kbarchive atdownload kbqfe kbprb KB917265
Feedback