Mensagem de erro quando um utilizador acede a um Web site do SharePoint que está publicado no ISA Server 2006 ou no Windows Essential Business Server 2008: "HTTP 401 não autorizado"

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:

  1. 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

  2. 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
  3. 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

  4. Na linha de comandos, mova para a localização onde guardou o ficheiro EnableKB940248.vbs.

  5. 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".

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×