Sintomas
Quando um utilizador acede a um Web site do SharePoint que é publicado no Microsoft Internet Security and Acceleration (ISA) Server 2006, o ISA Server 2006 SP1 ou no Windows Essential Business Server 2008, o utilizador poderá receber uma das seguintes mensagens de erro: erro de mensagem 1
HTTP 401 não autorizado
Mensagem de erro 2
HTTP 500 o servidor negou o especificado URL Uniform Resource Locator (). Contacte o administrador do servidor.
Este problema ocorre quando as condições seguintes são verdadeiras:
-
A escuta da Web que utiliza a regra de publicação Web do SharePoint, autenticação de formulários de HTML está configurada.
-
O cliente Web envia um pedido POST para o Web site do SharePoint.
-
O URL do pedido POST contém caracteres expandidos. Por exemplo, o URL contém is, à ou è.
Causa
Este problema ocorre porque o ISA Server ou Windows Essential Business Server 2008 não é possível analisar um URL que contém caracteres expandidos. Neste caso, o ISA Server ou Windows Essential Business Server 2008 rejeita o pedido POST que o cliente envia.
Resolução
Para resolver este problema, siga estes passos:
-
Aplique a correcção descrita no artigo 940250 da Microsoft Knowledge Base. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
Descrição de 940250 do pacote de correcções do ISA Server 2006: 16 de Julho de 2007
-
Copie o script seguinte no bloco de notas:Nota para resolver este problema no ISA Server 2006, utilize o seguinte script. Não é necessário aplicar a correcção incluída neste artigo para o ISA Server 2006 SP1, mas tem de utilizar o 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
-
Guarde o ficheiro como um ficheiro de script do Microsoft Visual Basic utilizando a extensão de nome de ficheiro. vbs. Por exemplo, guarde o ficheiro utilizando o seguinte nome:
EnableKB940248.vbs
-
Na linha de comandos, mova para a localização onde guardou o ficheiro EnableKB940248.vbs.
-
Execute o seguinte comando:
cscript EnableKB940248.vbs
Nota Depois de seguir estes passos, apenas a parte de consulta do URL pode conter caracteres expandidos. A parte de consulta segue o ponto de interrogação (?) no URL. A parte que vem antes do ponto de interrogação no URL não pode conter caracteres expandidos, mesmo depois de utilizar esta resolução. Se pretender remover as alterações que são efectuadas quando executa o script no passo 5, execute o seguinte script:
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
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".