Síntomas
Después de instalar una de las siguientes actualizaciones, algunas páginas fantasmas en Microsoft SharePoint no se representan:
Por ejemplo, las páginas del portal de Microsoft Identity Manager (MIM) y algunas páginas personalizadas que se implementan a través de la solución de SharePoint no se representan.
Además, puede que experimente alguno de los escenarios siguientes:
Escenario 1
La página fantasma bloqueada muestra uno de los siguientes mensajes de error:
-
En esta página no se permite el atributo "autoeventwireup".
-
En esta página no se permite el atributo "enablesessionstate".
-
No se permiten bloques de código en este archivo.
-
El controlador de eventos "OnSelectedIndexChanged" no está permitido en esta página.
Nota El evento del último mensaje de error también podría ser otro evento, como "OnClick".
Escenario 2
La página fantasma bloqueada muestra el siguiente mensaje de error:
UnsafeControlException: un elemento web o un control de formulario web en esta página no se pueden mostrar ni importar. No se pudo encontrar el tipo o no se registró como seguro.
Escenario 3
La página fantasma bloqueada muestra el siguiente mensaje de error:
El archivo al que se hace referencia '/_layouts/somedirectory/affectedusercontrol.ascx' no está permitido en esta página.
Causa
Las páginas fantasma se almacenan en el sistema de archivos. Su nivel de seguridad se mejora al prohibir los scripts del lado del servidor y los controles no seguros. Es posible que se bloquee la representación de una página fantasma si se cumplen las siguientes condiciones:
-
La página fantasma contiene código en línea o script de servidor.
-
El tipo de código subyacente o el tipo de elemento web no están registrados como seguros.
Solución para el escenario 1
Para solucionar este problema, agregue un nuevo elemento PageParserPath que tenga un atributo VirtualPath al archivo Web.config en el elemento configuration/SharePoint/SafeMode/PageParserPaths.
Por ejemplo, recibe el siguiente mensaje de error:
"En esta página no se permite el atributo 'autoeventwireup'".
En este caso, puede agregar un elemento PageParserPath del modo siguiente:
<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 se deben desbloquear todas las páginas del mismo directorio virtual, puede usar un elemento PageParserPath del modo siguiente:
<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 es la ruta de acceso de la página bloqueada.
-
VirtualPath debe hacer referencia a una página fantasma y un usuario no puede anular su condición de fantasma, o un directorio que contenga dicha página.
-
VirtualPath debe hacer referencia a una página que no hace referencia a otra página, a una página principal cuya condición de elemento fantasma se puede anular o a un directorio que no contiene dicha página o página principal.
-
DirectFileDependencies indica el número de dependencias de archivo directas permitidas. Si recibe un mensaje de error como "el número de dependencias de archivo directas permitidas supera el límite", cambie este valor.
Resolución del escenario 2
Para resolver este problema, agregue un nuevo elemento SafeControls para el tipo, el espacio del nombre y el nombre seguro de ensamblado dados al archivo Web.config en el elemento configuration/SharePoint/SafeControls como se describe en el elemento SafeControls (solución). Luego, establezca el atributo Seguro como VERDADERO.
Para más información sobre el formato de los valores de atributo en el elemento SafeControls, consulte la tabla del paso 12 en la sección "Marking Safe Controls in the Package Designer" de How to: Mark controls as safe controls.
Resolución del escenario 3
Para solucionar este problema, agregue un nuevo elemento SafeControls que use el atributo Src en el archivo Web.config en el elemento configuration/SharePoint/SafeControls.
Por ejemplo, si recibe el siguiente mensaje de error:
"El archivo al que se hace referencia '/_layouts/somedirectory/affectedusercontrol.ascx' no está permitido en esta página".
En este caso, puede agregar el elemento SafeControls tal como se indica en los siguientes ejemplos:
< SafeControls>
<SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" SafeAgainstScript="True" />
</SafeControls>
< SafeControls> <SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" /> </SafeControls>