Symptomy
Po zainstalowaniu jednej z poniższych aktualizacji niektóre strony w programie Microsoft SharePoint w trybie ghosted pages nie są renderowane:
-
21 września 2020 r., aktualizacja dla programu SharePoint Server 2019 (KB4461512)
-
SharePoint Enterprise Server 2016: 8 września 2020 r. (KB 4484506)
Na przykład strony portalu menedżera tożsamości firmy Microsoft i niektóre dostosowane strony wdrożone za pośrednictwem rozwiązania programu SharePoint nie są renderowane.
Ponadto może wystąpić co najmniej jeden z poniższych scenariuszy.
Scenariusz 1
Na zablokowanej stronie z błędem jest wyświetlany jeden z następujących komunikatów o błędach:
-
Atrybut "autoeventwireup" nie jest dozwolony na tej stronie.
-
Atrybut "enablesessionstate" nie jest dozwolony na tej stronie.
-
Bloki kodu w tym pliku są niedozwolone.
-
Obsługa zdarzeń "OnSelectedIndexChanged" nie jest dozwolona na tej stronie.
Uwaga Zdarzeniem w ostatnim komunikacie o błędzie może być też inne zdarzenie, na przykład "PrzyKliknij".
Scenariusz 2
Na zablokowanej stronie z błędem jest wyświetlany następujący komunikat o błędzie:
NiebezpiecznyKontrolka: Nie można wyświetlić ani zaimportować składników Web Part lub kontrolki formularza sieci Web na tej stronie. Nie można odnaleźć typu lub nie jest on zarejestrowany jako bezpieczny.
Scenariusz 3
Na zablokowanej stronie z błędem jest wyświetlany następujący komunikat o błędzie:
Plik odwołania "/_layouts/somedirectory/affectedusercontrol.ascx" nie jest dozwolony na tej stronie.
Przyczyna
Strony wytłowane są przechowywane w systemie plików. Ich poziom zabezpieczeń jest zwiększany przez zakazanie skryptów po stronie serwera i niebezpiecznych kontrolek. W przypadku gdy są spełnione następujące warunki, może być zablokowana renderowanie strony w trybie ghosted page:
-
Strona zawierająca kod w wierszu lub skrypt po stronie serwera.
-
Typ lub typ składników Web Part za kodem nie jest zarejestrowany jako bezpieczny.
Rozwiązanie problemu dla scenariusza 1
Aby rozwiązać ten problem, dodaj nowy element PageParserPath, który ma atrybut VirtualPath do pliku Web.config w obszarze konfiguracji/SharePoint/SafeMode/PageParserPaths.
Na przykład jest wyświetlany następujący komunikat o błędzie:
Atrybut "autoeventwireup" nie jest dozwolony na tej stronie".
W takim przypadku możesz dodać element PageParserPath w następujący sposób:
<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="15" TotalFileDependencies="250" AllowPageLevelTrace="false">
<PageParserPaths>
<PageParserPath VirtualPath="/<relativepath>/page.aspx" CompilationMode="Always" AllowServerSideScript="true" AllowUnsafeControls="true"/>
</PageParserPaths>
</SafeMode>
Jeśli trzeba odblokować wszystkie strony w tym samym katalogu wirtualnym, możesz użyć elementu PageParserPath w następujący sposób:
<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="15" TotalFileDependencies="250" AllowPageLevelTrace="false">
<PageParserPaths>
<PageParserPath VirtualPath="/<relativepath>/*" CompilationMode="Always" AllowServerSideScript="true" AllowUnsafeControls="true" IncludeSubFolders="True"/>
</PageParserPaths>
</SafeMode>
-
VirtualPath to ścieżka zablokowanej strony.
-
Program VirtualPath musi odwoływać się do strony, która jest wyeksymowana i nie może zostać odsłoowana przez żadnego użytkownika ani do katalogu zawierającego taką stronę.
-
Program VirtualPath musi odwoływać się do strony, która nie odwołuje się do innej strony lub strony wzorcowej, która może zostać odsuwana, albo do katalogu, który nie zawiera takiej strony lub strony wzorcowej.
-
DirectFileDependencies wskazuje liczbę dozwolonych bezpośrednich zależności między plikami. Jeśli zostanie wyświetlony komunikat o błędzie, taki jak "liczba dozwolonych bezpośrednich zależności plików przekracza limit", zmień tę wartość.
Rozwiązanie problemu dla scenariusza 2
Aby rozwiązać ten problem, dodaj nowy element SafeControls dla danego typu, przestrzeni nazw i silnej nazwy zestawu do pliku Web.config w obszarze konfiguracji/programu SharePoint/safeControls zgodnie z opisem w elemencie Bezpiecznekontrole (rozwiązanie). Następnie ustaw atrybut Safe naWARTOŚĆ PRAWDA.
Aby uzyskać więcej informacji na temat formatu wartości atrybutów w elemencie SafeControls, zapoznaj się z tabelą w kroku 12 w sekcji "Oznaczanie bezpiecznych kontrolek w projektancie pakietów" w temacie Jak: Oznaczanie kontrolek jako bezpiecznych kontrolek.
Rozwiązanie problemu dla scenariusza 3
Aby rozwiązać ten problem, dodaj nowy element SafeControls, który używa atrybutu Src, do pliku Web.config w elemencie configuration/SharePoint/SafeControls.
Na przykład jest wyświetlany następujący komunikat o błędzie:
"Plik odwołania "/_layouts/somedirectory/affectedusercontrol.ascx" nie jest dozwolony na tej stronie".
W takim przypadku możesz dodać element SafeControls, na przykład:
< SafeControls>
<SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" SafeAgainstScript="True" />
</SafeControls>
< SafeControls> <SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" /> </SafeControls>