Συμπτώματα
Όταν ένας χρήστης αποκτά πρόσβαση σε μια τοποθεσία του SharePoint στο Web που δημοσιεύεται στο Microsoft Internet Security and Acceleration (ISA) Server 2006, ISA Server 2006 SP1 ή Windows βασικές επιχειρηματικές Server 2008, ο χρήστης ενδέχεται να λάβετε ένα από τα ακόλουθα μηνύματα λάθους:σφάλμα το μήνυμα 1
HTTP 401 μη εξουσιοδοτημένη πρόσβαση
Μήνυμα σφάλματος 2
HTTP 500 ο διακομιστής δεν επέτρεψε την καθορισμένη Uniform Resource Locator (URL). Επικοινωνήστε με το διαχειριστή του διακομιστή.
Αυτό το πρόβλημα παρουσιάζεται όταν ισχύουν τα εξής:
-
Με το πρόγραμμα ακρόασης στο Web που χρησιμοποιεί τον κανόνα δημοσίευσης στο Web του SharePoint, ο έλεγχος ταυτότητας φορμών HTML έχει ρυθμιστεί.
-
Το πρόγραμμα-πελάτη Web στέλνει μια αίτηση POST με την τοποθεσία Web του SharePoint.
-
Η διεύθυνση URL από την αίτηση POST περιέχει εκτεταμένους χαρακτήρες. Για παράδειγμα, η διεύθυνση URL περιέχει é, στο ή θ.
Αιτία
Αυτό το ζήτημα προκύπτει επειδή ο ISA Server ή Windows βασικές επιχειρηματικές Server 2008 δεν μπορεί να αναλύσει μια διεύθυνση URL που περιέχει εκτεταμένους χαρακτήρες. Στην περίπτωση αυτή, το ISA Server ή Windows βασικές επιχειρηματικές Server 2008 απορρίπτει την αίτηση POST, που στέλνει το πρόγραμμα-πελάτη.
Επίλυση
Για να επιλύσετε αυτό το ζήτημα, ακολουθήστε τα εξής βήματα:
-
Εφαρμόστε την επείγουσα επιδιόρθωση που περιγράφεται στο άρθρο της Γνωσιακής βάσης 940250. Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
940250 περιγραφή του πακέτου επειγουσών επιδιορθώσεων του ISA Server 2006: 16 Ιουλίου 2007
-
Αντιγράψτε την ακόλουθη δέσμη ενεργειών στο Σημειωματάριο (Notepad):Σημείωση για να επιλύσετε αυτό το ζήτημα στον ISA Server 2006, χρησιμοποιήστε την ακόλουθη δέσμη ενεργειών. Δεν χρειάζεται να εφαρμόσετε την επείγουσα επιδιόρθωση σε αυτό το άρθρο για τον ISA Server 2006 SP1, αλλά πρέπει να χρησιμοποιήσετε τη δέσμη ενεργειών.
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
-
Αποθηκεύστε το αρχείο ως αρχείο δέσμης ενεργειών της Microsoft Visual Basic, χρησιμοποιώντας την επέκταση ονόματος αρχείου .vbs. Για παράδειγμα, αποθηκεύστε το αρχείο χρησιμοποιώντας το ακόλουθο όνομα:
EnableKB940248.vbs
-
Σε μια γραμμή εντολών, μετακινήστε το στη θέση όπου αποθηκεύσατε το αρχείο EnableKB940248.vbs.
-
Εκτελέστε την ακόλουθη εντολή:
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
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα των προϊόντων της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".