Triệu chứng
Khi người dùng truy cập trang SharePoint Web được xuất bản trong Microsoft Internet Security and Acceleration (ISA) Server 2006, ISA Server 2006 SP1 hoặc Windows Essential Business Server 2008, người dùng có thể nhận được một thông báo lỗi sau:lỗi thông báo 1
HTTP 401 trái phép
Thông báo lỗi 2
HTTP 500 máy chủ từ chối quy định đại lý đồng nguyên (URL). Liên hệ với quản trị viên máy chủ.
Sự cố này xảy ra khi các điều sau là đúng:
-
Nghe Web sử dụng quy tắc xuất bản SharePoint Web, xác thực biểu mẫu được cấu hình.
-
Web client gửi yêu cầu bài cho các trang SharePoint Web.
-
URL yêu cầu bài có chứa các ký tự mở rộng. Ví dụ: URL chứa người, à hoặc è.
Nguyên nhân
Sự cố này xảy ra do ISA Server hoặc Windows Essential Business Server 2008 không thể phân tích cú pháp URL có chứa các ký tự mở rộng. Trong trường hợp này, máy chủ ISA hoặc Windows Essential Business Server 2008 từ chối yêu cầu đăng máy khách gửi.
Giải pháp
Để giải quyết sự cố này, hãy làm theo các bước sau:
-
Áp dụng hotfix được mô tả trong bài viết cơ sở kiến thức Microsoft 940250. Để biết thêm chi tiết, bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
940250 mô tả gói hotfix ISA Server 2006: ngày 16 tháng 12 năm 2007
-
Sao chép lệnh sau vào Notepad:chú ý giải quyết sự cố trong ISA Server 2006, sử dụng sau. Bạn không cần phải áp dụng hotfix trong bài viết này dành cho phiên bản SP1 của ISA Server 2006, nhưng bạn có thể sử dụng tập lệnh.
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
-
Lưu tệp dưới dạng tệp tập lệnh Microsoft Visual Basic bằng cách sử dụng phần mở rộng tên tệp .vbs. Ví dụ: lưu tệp bằng cách sử dụng tên sau:
EnableKB940248.vbs
-
Tại dấu nhắc lệnh, di chuyển đến vị trí mà bạn đã lưu tệp EnableKB940248.vbs.
-
Chạy lệnh sau:
cscript EnableKB940248.vbs
Lưu ý Sau khi bạn làm theo các bước sau, chỉ phần truy vấn của URL có thể chứa các ký tự mở rộng. Phần truy vấn sau dấu chấm hỏi (?) trong URL. Phần trước dấu chấm hỏi URL không chứa ký tự mở rộng ngay cả khi bạn sử dụng giải pháp này. Nếu bạn muốn loại bỏ các thay đổi được thực hiện khi bạn chạy tập lệnh trong bước 5, chạy lệnh sau:
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
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".