Symptomen
Wanneer een gebruiker een SharePoint-website opent die is gepubliceerd in Microsoft Internet Security and Acceleration (ISA) Server 2006, ISA Server 2006 SP1 of Windows Essential Business Server 2008, kan de gebruiker een van de volgende foutberichten ontvangen:Foutbericht 1
HTTP 401 niet gemachtigd
Foutbericht 2
HTTP 500 de server heeft de opgegeven URL (Uniform Resource Locator) geweigerd. Neem contact op met de serverbeheerder.
Dit probleem treedt op als aan de volgende voorwaarden is voldaan:
-
In de weblistener die de SharePoint-webpublicatieregel gebruikt, wordt HTML-formulierverificatie geconfigureerd.
-
De webclient verzendt een POST-aanvraag naar de SharePoint-website.
-
De URL van de POST-aanvraag bevat uitgebreide tekens. De URL bevat bijvoorbeeld é, à of è.
Oorzaak
Dit probleem treedt op omdat ISA Server of Windows Essential Business Server 2008 een URL die uitgebreide tekens bevat, niet kan parseren. In dit geval weigert ISA Server of Windows Essential Business Server 2008 de POST-aanvraag die de client verzendt.
Oplossing
Ga als volgt te werk om dit probleem op te lossen:
-
Pas de hotfix toe die wordt beschreven in Microsoft Knowledge Base-artikel 940250. Klik voor meer informatie op het volgende artikelnummer, zodat het artikel in de Microsoft Knowledge Base wordt weergegeven:
940250 beschrijving van het hotfix-pakket voor ISA Server 2006:16 juli 2007
-
Kopieer het volgende script naar Kladblok:Opmerking als u dit probleem wilt oplossen in ISA Server 2006, gebruikt u het volgende script. U hoeft de hotfix in dit artikel niet toe te passen voor ISA Server 2006 SP1, maar u moet het script wel gebruiken.
Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "CookieFilterDecodeUEncoding"Const SE_VPS_VALUE = trueSub SetValue() ' Create the root object. Dim root ' The FPCLib.FPC root object Set root = CreateObject("FPC.Root") 'Declare the other objects that are needed. Dim array ' An FPCArray object Dim VendorSets ' An FPCVendorParametersSets collection Dim VendorSet ' An FPCVendorParametersSet object ' Get references to the array object ' and to 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 IfEnd SubSub CheckError() If Err.Number <> 0 Then WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description Err.Clear End IfEnd SubSetValue
-
Sla het bestand op als een Microsoft Visual Basic-scriptbestand met de bestandsnaamextensie. vbs. Sla het bestand bijvoorbeeld op met de volgende naam:
EnableKB940248.vbs
-
Ga bij een opdrachtprompt naar de locatie waar u het bestand EnableKB940248. vbs hebt opgeslagen.
-
Voer de volgende opdracht uit:
cscript EnableKB940248. vbs
Opmerking Nadat u deze stappen hebt uitgevoerd, kan alleen het query gedeelte van de URL uitgebreide tekens bevatten. Het query gedeelte volgt het vraagteken (?) in de URL. Het gedeelte dat vóór het vraagteken in de URL komt, mag geen uitgebreide tekens bevatten, zelfs niet nadat u deze resolutie hebt gebruikt. Als u de wijzigingen wilt verwijderen die zijn aangebracht wanneer u het script uitvoert in stap 5, voert u het volgende script uit:
Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "CookieFilterDecodeUEncoding"Const SE_VPS_VALUE = FalseSub SetValue()' Create the root object.Dim root ' The FPCLib.FPC root objectroot = CreateObject("FPC.Root")'Declare the other objects that are needed.Dim array ' An FPCArray objectDim VendorSets ' An FPCVendorParametersSets collectionDim VendorSet ' An FPCVendorParametersSet object' Get references to the array object' and to the network rules collection.array = root.GetContainingArrayVendorSets = array.VendorParametersSetsOn Error Resume NextVendorSet = VendorSets.Item(SE_VPS_GUID)If Err.Number <> 0 ThenErr.Clear()' Add the itemVendorSet = VendorSets.Add(SE_VPS_GUID)CheckError()WScript.Echo("New VendorSet added... " & VendorSet.Name)ElseWScript.Echo("Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME))End IfIf VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE ThenErr.Clear()VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUEIf Err.Number <> 0 ThenCheckError()ElseVendorSets.Save(False, True)CheckError()If Err.Number = 0 ThenWScript.Echo("Done with " & SE_VPS_NAME & ", saved!")End IfEnd IfElseWScript.Echo("Done with " & SE_VPS_NAME & ", no change!")End IfEnd SubSub CheckError()If Err.Number <> 0 ThenWScript.Echo("An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description)Err.Clear()End IfEnd SubSetValue Change to:[INSERT CORRECTION]Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "CookieFilterDecodeUEncoding"Const SE_VPS_VALUE = falseSub SetValue()' Create the root object.Dim root ' The FPCLib.FPC root objectSet root = CreateObject("FPC.Root")'Declare the other objects that are needed.Dim array ' An FPCArray objectDim VendorSets ' An FPCVendorParametersSets collectionDim VendorSet ' An FPCVendorParametersSet object' Get references to the array object' and to the network rules collection.Set array = root.GetContainingArraySet VendorSets = array.VendorParametersSetsOn Error Resume NextSet VendorSet = VendorSets.Item( SE_VPS_GUID )If Err.Number <> 0 ThenErr.Clear' Add the itemSet VendorSet = VendorSets.Add( SE_VPS_GUID )CheckErrorWScript.Echo "New VendorSet added... " & VendorSet.NameElseWScript.Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)End Ifif VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE ThenErr.ClearVendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUEIf Err.Number <> 0 ThenCheckErrorElseVendorSets.Save false, trueCheckErrorIf Err.Number = 0 ThenWScript.Echo "Done with " & SE_VPS_NAME & ", saved!"End IfEnd IfElseWScript.Echo "Done with " & SE_VPS_NAME & ", no change!"End IfEnd SubSub CheckError()If Err.Number <> 0 ThenWScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.DescriptionErr.ClearEnd IfEnd SubSetValue
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.