Symptômes
Après avoir installé l’une des mises à jour suivantes, certaines pages fantômes dans Microsoft SharePoint ne sont pas générées :
-
Description de la mise à jour de sécurité de SharePoint Server 2019 du 8 septembre 2020 (KB 4484505)
-
Mise à jour du 21 septembre 2020 de SharePoint Server 2019 (KB4461512)
Par exemple, les pages du portail Microsoft Identity Manager (MIM) et certaines pages personnalisées qui sont déployées via la solution SharePoint ne sont pas générées.
En outre, il se peut que vous rencontriez les scénarios suivants.
Scénario 1
La page fantôme bloquée affiche l’un des messages d’erreur suivants :
-
L’attribut 'autoeventwireup' n’est pas autorisé sur cette page.
-
L’attribut 'enablesessionstate' n’est pas autorisé sur cette page.
-
Les blocs de code ne sont pas autorisés dans ce fichier.
-
Le gestionnaire d’événement 'OnSelectedIndexChanged' n’est pas autorisé sur cette page.
Remarque L’événement dans le dernier message d’erreur peut également être un autre événement, tel que « SurClic ».
Scénario 2
La page fantôme bloquée peut afficher le message d’erreur suivant :
UnsafeControlException : un composant WebPart ou un contrôle de formulaire web sur cette page ne peut pas être affiché ou importé. Le type n’a pas été trouvé ou n’est pas enregistré comme étant sûr.
Scénario 3
La page fantôme bloquée peut afficher le message d’erreur suivant :
Le fichier référencé '/_layouts/somedirectory/affectedusercontrol.ascx' n’est pas autorisé sur cette page.
Cause
Les pages fantômes sont stockées dans le système de fichiers. Leur niveau de sécurité est amélioré par l’interdiction des scripts côté serveur et des contrôles non sécurisés. Une page fantôme peut être bloquée dans l’affichage si les conditions suivantes s’appliquent :
-
La page fantôme contient un code en ligne ou un script côté serveur.
-
Le type code-behind ou WebPart n’est pas enregistré comme étant sécurisé.
Résolution du scénario 1
Pour résoudre ce problème, ajoutez un nouvel élément PageParserPath possédant un attribut VirtualPath au fichier Web.config sous l’élément configuration/SharePoint/SafeMode/PageParserPaths.
Par exemple, le message d’erreur suivant s’affiche :
« L’attribut 'autoeventwireup' n’est pas autorisé sur cette page. »
Dans ce cas, vous pouvez ajouter un élément PageParserPath, comme suit :
<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>
Si toutes les pages du même répertoire virtuel doivent être débloquées, vous pouvez utiliser un élément PageParserPath, comme suit :
<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 est le chemin d’accès de la page bloquée.
-
VirtualPath doit référencer une page qui est fantôme et ne peut être supprimée de son état fantôme par aucun utilisateur, ou un répertoire qui contient une telle page.
-
VirtualPath doit référencer une page qui ne référence pas une autre page ou une page maître qui peut être tirée de son état fantôme, ou un répertoire qui ne contient pas une telle page ou une page maître.
-
DirectFileDependencies indique le nombre de dépendances de fichier directes autorisées. Si vous recevez un message d’erreur tel que « le nombre de dépendances de fichier directes autorisées dépasse la limite », modifiez cette valeur.
Résolution du scénario 2
Pour résoudre ce problème, ajoutez un nouvel élément SafeControls correspondant au type, à l’espace de noms et au nom fort d’assembly donnés au fichier Web.config sous l’élément configuration/SharePoint/SafeControls, conformément à la procédure décrite dans l’article Élément SafeControls (solution), puis définissez l’attribut Safe sur TRUE.
Pour plus d’informations sur le format des valeurs d’attribut dans l’élément SafeControls, consultez le tableau de l’étape 12 dans la section « Marquage de contrôles sécurisés dans le concepteur de packages » de la page Comment marquer les contrôles en tant que contrôles sécurisés.
Résolution du scénario 3
Pour résoudre ce problème, ajoutez un nouvel élément SafeControls utilisant l’attribut Src au fichier Web.config sous l’élément configuration/SharePoint/SafeControls.
Par exemple, le message d’erreur suivant s’affiche :
« Le fichier référencé '/_layouts/somedirectory/affectedusercontrol.ascx' n’est pas autorisé sur cette page. »
Dans ce cas, vous pouvez ajouter l’élément SafeControls, comme dans les exemples suivants :
< SafeControls>
<SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" SafeAgainstScript="True" />
</SafeControls>
< SafeControls> <SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" /> </SafeControls>