Після того, як користувач отримує доступ до SharePoint, веб-сайт Опубліковано в ISA Server 2006 або Windows Essential Business Server 2008 повідомлення про помилку: "HTTP 401 несанкціонованих"


Ознаки


Після того, як користувач отримує доступ до SharePoint, веб-сайт публікації в Microsoft Internet Security і прискорення ISA Server 2006, ISA Server 2006 пакетом оновлень 1 або Windows Essential Business Server 2008, користувач може з'явитися одне з таких повідомлень про помилку:помилки повідомлення 1
HTTP 401, несанкціоноване
Повідомлення про помилку 2
HTTP 500-сервер заборонено до вказаного уніфікований ресурсу (URL). Зверніться до адміністратора сервера.
Ця проблема виникає за таких трьох умов:
  • Веб-прослуховувач, який використовується в SharePoint веб-публікації правило налаштовано HTML-форму автентифікації.
  • Веб-клієнт надсилає запит POST, на сайті SharePoint.
  • URL-адреси запит POST, містить розширені символи. Наприклад, що URL-адреса містить é, меню або е.

Причина


Ця проблема виникає в тому, що сервер ISA Server або Windows Essential Business Server 2008 не вдалося проаналізувати URL-адреса містить розширені символи. Таким чином, клієнт надсилає запит POST скасування ISA Server або Windows Essential Business Server 2008.

Спосіб вирішення


Щоб вирішити цю проблему, виконайте такі дії.
  1. Застосуйте виправлення, описане в статті бази знань Майкрософт, 940250. Клацніть номер статті в базі знань Microsoft Knowledge Base:
    Опис пакета виправлень ISA Server 2006 940250 : 16 липня 2007 року.
  2. Скопіюйте наведений нижче сценарій в текстовий файл:Примітка для вирішення цієї проблеми у ISA Server 2006, використовуйте такий сценарій. Не потрібно застосувати виправлення в цій статті, для ISA Server 2006 пакетом оновлень 1, але ви повинні використовувати сценарій.
    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. Збережіть файл як файл сценарію Microsoft Visual Basic, за допомогою розширення імені файлу. vbs. Наприклад, збережіть файл використовувати таку назву:
    EnableKB940248.vbs
  4. У командному рядку перемістити папку, у якій збережено файл EnableKB940248.vbs.
  5. Виконайте таку команду:
    cscript EnableKB940248.vbs
Примітка. Після виконання цих дій, для запиту входить URL-адреси, може містити розширені символи. Запитів, яке входить, слід знак запитання (?), URL-адресу. Частина, яка стоїть перед знаком питання, URL-адресу, не може містити розширені символи, навіть після використання розглянутого. Якщо потрібно видалити зміни, внесені під час запуску сценарію на кроці 5, запустіть наведений нижче сценарій:
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

Стан


Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".