Problembeschreibung
Wenn ein Benutzer auf eine SharePoint-Website zugreift, die in Microsoft Internet Security and Acceleration (ISA) Server 2006, ISA Server 2006 SP1 oder in Windows Essential Business Server 2008 veröffentlicht wird, erhält der Benutzer möglicherweise eine der folgenden Fehlermeldungen:Fehlermeldung 1
HTTP 401 Nicht autorisiert
Fehlermeldung 2
HTTP 500 Der Server verweigerte den angegebenen URL (Uniform Resource Locator). Wenden Sie sich an den Serveradministrator.
Das Problem tritt auf, wenn die folgenden Bedingungen vorliegen:
-
Im Weblistener, den die SharePoint-Webveröffentlichungsregel verwendet, wird die HTML-Formularauthentifizierung konfiguriert.
-
Der Webclient sendet eine POST-Anforderung an die SharePoint-Website.
-
Die URL der POST-Anforderung enthält erweiterte Zeichen. Die URL enthält z. B. é, é oder .
Ursache
Dieses Problem tritt auf, weil ISA Server oder Windows Essential Business Server 2008 keine URL analysieren können, die erweiterte Zeichen enthält. In diesem Fall lehnt ISA Server oder Windows Essential Business Server 2008 die POST-Anforderung ab, die der Client sendet.
Lösung
Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:
-
Wenden Sie den Hotfix an, der in Microsoft Knowledge Base-Artikel 940250 beschrieben wird. Weitere Informationen erhalten Sie, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
940250 Beschreibung des ISA Server 2006-Hotfixpakets: 16. Juli 2007
-
Kopieren Sie das folgende Skript in Notepad:Hinweis Zum Beheben dieses Problems in ISA Server 2006 verwenden Sie das folgende Skript. Sie müssen den Hotfix in diesem Artikel für ISA Server 2006 SP1 nicht anwenden, aber Sie müssen das Skript verwenden.
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
-
Speichern Sie die Datei als Microsoft Visual Basic-Skriptdatei mithilfe der .vbs Dateinamenerweiterung. Speichern Sie die Datei beispielsweise mit dem folgenden Namen:
EnableKB940248.vbs
-
Wechseln Sie an einer Eingabeaufforderung zu dem Speicherort, an dem Sie die Datei EnableKB940248.vbs gespeichert haben.
-
Führen Sie den folgenden Befehl aus:
cscript EnableKB940248.vbs
Hinweis Nachdem Sie diese Schritte ausgeführt haben, kann nur der Abfrageteil der URL erweiterte Zeichen enthalten. Der Abfrageteil folgt dem Fragezeichen (?) in der URL. Der Teil, der vor dem Fragezeichen in der URL steht, darf auch nach Derverwendung dieser Auflösung keine erweiterten Zeichen enthalten. Wenn Sie die Änderungen entfernen möchten, die beim Ausführen des Skripts in Schritt 5 vorgenommen werden, führen Sie das folgende Skript aus:
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 hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.