Procedimientos recomendados para desarrollar soluciones de espacio aislado

Última modificación: martes, 12 de abril de 2011

Hace referencia a: SharePoint Foundation 2010

En este artículo
Evitar la creación de miembros estáticos
Evitar la generación de excepciones no controladas
Usar el atributo AllowPartiallyTrustedCallers y el atributo SharePointPermission

Disponible en SharePoint Online

En este tema se describen algunos procedimientos recomendados para el desarrollo de soluciones de espacio aislado.

Evitar la creación de miembros estáticos

Cuando una solución de espacio aislado específica se controla por primera vez en un servidor determinado que ejecuta el servicio de código de espacio aislado de SharePoint Foundation (a veces denominado el servicio de host de código de usuario), el servicio crea un dominio de aplicación para este en un proceso de trabajo en espacio aislado, y todas las variables estáticas del código de solución se cargan en el dominio. El dominio de aplicación permanece activo después de que la solución de espacio aislado termina y se vuelve a usar si la misma solución de espacio aislado es solicitada de nuevo, tal vez por parte de un usuario diferente en otra colección de sitios. Un efecto secundario de este sistema es que los valores estáticos no se vuelven a cargar y estos valores no son necesariamente adecuados para cada ejecución de la solución de espacio aislado en cada contexto. Por ejemplo, supongamos que el código de la solución coloca SPContext.Current en un campo estático denominado myContext. Si la misma solución se solicita desde otra colección de sitios, el valor de myContext.Site es incorrecto.

Por este motivo, debe evitar la creación de propiedades y campos estáticos en el código de espacio aislado.

Evitar la generación de excepciones no controladas

El código no debe generar excepciones que no puede controlar. Esto se debe a que una excepción no controlada en una solución de espacio aislado elimina todas las soluciones de espacio aislado en el proceso de trabajo de espacio aislado, no solo aquella en la que se genera la excepción. Por la misma razón se recomienda capturar todas las excepciones y notificar de un error adecuado en la interfaz de usuario de la solución de espacio aislado, como la propiedad Message del objeto Exception.

Usar el atributo AllowPartiallyTrustedCallers y el atributo SharePointPermission

El código en el proceso de trabajo en espacio aislado solo puede llamar a ensamblados que tengan AllowPartiallyTrustedCallersAttribute. Esto significa que casi todos los ensamblados personalizados que se pueden implementar en soluciones de espacio aislado deben tener este atributo. Además, ASP.NET necesita este atributo en cualquier ensamblado que incluya una clase derivada de WebPart. Por estas razones, Microsoft Visual Studio coloca este atributo en el archivo AssemblyInfo de manera predeterminada siempre que se inicia un proyecto de solución de espacio aislado. Sin embargo, los ensamblados que tienen este atributo crean un problema de seguridad si el paquete de solución se instala como una solución de granja de servidores, porque permitiría que cualquier llamador de confianza parcial llame a las clases del ensamblado en un entorno de plena confianza. Si cualquiera de las clases tiene acceso al modelo de objetos de SharePoint, cualquier llamador de confianza parcial puede acceder al modelo de objetos de SharePoint. Para evitarlo, todas las clases en un ensamblado marcado con el atributo AllowPartiallyTrustedCallers que llama al modelo de objetos de SharePoint deben decorarse con el siguiente atributo de solicitud de permisos:

[Microsoft.SharePoint.Security.SharePointPermission(System.Security.Permissions.SecurityAction.LinkDemand, ObjectModel=true)]

Esto garantiza que solo los llamadores que tengan el permiso de modelo de objetos de SharePoint puedan llamar a los miembros de la clase.

El atributo AllowPartiallyTrustedCallers no es exactamente un requisito en todos los ensamblados en soluciones de espacio aislado. Por ejemplo, se llama a un receptor de eventos solo mediante el EventCodeHost de plena confianza, por lo que si un receptor de eventos es el único elemento en el ensamblado, el atributo AllowPartiallyTrustedCallers se puede quitar.

Vea también

Conceptos

Qué se puede implementar en una solución de espacio aislado

Otros recursos

Soluciones de espacio aislado