Symptômes
Lorsqu'un utilisateur accède à un site Web SharePoint qui est publié dans Microsoft Internet Security and Acceleration (ISA) Server 2006, ISA Server 2006 SP1 ou dans Windows Essential Business Server 2008, l'utilisateur peut recevoir l'un des messages d'erreur suivants : Message d'erreur1
HTTP 401 Non autorisé
Message d’erreur 2
HTTP 500 Le serveur a refusé le localisateur de ressources uniforme spécifié (URL). Contactez l'administrateur du serveur.
Ce problème se produit si les conditions suivantes sont présentes :
-
Dans l'auditeur Web que la règle de publication Web SharePoint utilise, l'authentification html de formulaire est configurée.
-
Le client Web envoie une demande POST au site Web SharePoint.
-
L'URL de la demande POST contient des caractères étendus. Par exemple, l'URL contient é, à, ou è.
Cause
Ce problème se produit parce que ISA Server ou Windows Essential Business Server 2008 ne peut pas analyser une URL qui contient des caractères étendus. Dans ce cas, ISA Server ou Windows Essential Business Server 2008 rejette la demande POST que le client envoie.
Résolution
Pour résoudre ce problème, suivez les étapes suivantes :
-
Appliquez le hotfix qui est décrit dans microsoft Knowledge Base article 940250. Pour plus d'informations, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft :
940250 Description du paquet de hotfixing ISA Server 2006 : 16 juillet 2007
-
Copiez le script suivant dans Notepad:Note Pour résoudre ce problème dans ISA Server 2006, utilisez le script suivant. Vous n'avez pas à appliquer le hotfix dans cet article pour ISA Server 2006 SP1, mais vous devez utiliser le script.
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
-
Enregistrez le fichier en tant que fichier de script Microsoft Visual Basic en utilisant l'extension de nom de fichier .vbs. Par exemple, enregistrez le fichier en utilisant le nom suivant :
EnableKB940248.vbs
-
Lors d'une invite de commande, déplacez-vous à l'endroit où vous avez enregistré le fichier EnableKB940248.vbs.
-
Exécutez la commande suivante :
cscript EnableKB940248.vbs
Remarque Après avoir suivi ces étapes, seule la partie requête de l'URL peut contenir des caractères étendus. La partie requête suit le point d'interrogation (QM) dans l'URL. La partie qui précède le point d'interrogation de l'URL ne peut pas contenir de caractères étendus même après avoir utilisé cette résolution. Si vous souhaitez supprimer les modifications apportées lorsque vous exécutez le script à l'étape 5, exécutez le script suivant :
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
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.