Mostrando entradas con la etiqueta WebParts. Mostrar todas las entradas
Mostrando entradas con la etiqueta WebParts. Mostrar todas las entradas

sábado, 9 de mayo de 2009

Configuración de Permisos para utilizar SQL en un WebPart

Problema

Cuando se desarrollan WebParts que interatúan con SQL en WSS 3.0 o MOSS 2007 Standard Edition (en la versión enterprise podríamos utilizar BDC para conectarnos a otra base de datos) aparece normalmente un error de permisos del tipo:


{"Request for the permission of type System.Data.SqlClient.SqlClientPermission,
System.Data, Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089 failed." }

Esto ocurre porque SharePoint, por razones de seguridad, no puede interactuar con sistemas fuera del medio ambiente propio (con SQL en este caso), y por la implementación del la seguridad de acceso de código (CAS, Code Access Security).

En general, cuando se esta desarrollando, es costumbre bajar el nivel de confianza a "Full" (trust level = "Full"), pero para cuando se va a entrar en producción, esto no es recomendable.

Solución
Para evitar el mensaje de error, localice el archivo "wss_minimaltrust.config" de Windows en:


C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG\wss_minimaltrust.config


E incluya el siguiente código en la sección "SecurityClasses":


<securityclass description="System.Data.SqlClient.SqlClientPermission, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="SqlClientPermission">


Y en la sección "PermissionSet", el siguiente código:


<IPermission class="SqlClientPermission" version="1"
Unrestricted="true" />

jueves, 20 de noviembre de 2008

Problema con SPSqlDataSource

SPSqlDataSource: Este control no permite connection strings con las siguientes keywords: 'Integrated Security', 'Trusted_Connection'


Hay varios controles en el sitio web utilizando controles SqlDataSource. Sin embargo, en tiempo de ejecución, se dispara un error como el siguiente:

Microsoft.SharePoint.WebPartPages.DataSourceControlDisabledException: This control does not allow connection strings with the following keywords: 'Integrated Security', 'Trusted_Connection'.

Esto sucede porque el SharePoint pone un tagMapping en el web.config que mapea el SqlDataSource de ASP.NET a su SPSqlDataSource. Una solución bastante simple es la siguiente, quitar el tagmapping. Sin embargo, no podemos eliminar la línea, debemos usar el elemento remove.

<remove tagType="System.Web.UI.WebControls.SqlDataSource, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

Esto nos permitirá trabajar con el control, pero debemos tener en cuenta que para utilizar el control debemos registrar al SqlDataSource de ASP.NET como un control seguro.

<SafeControl Assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Namespace="System.Web.UI.WebControls" TypeName="SqlDataSource" Safe="True" AllowRemoteDesigner="False" />

Estilo para un WebPart en Particular

Todos los elementos web responden a los estilos definidos en la plantilla css que corresponde al theme elegido, de no encontrar ese estilo en la misma lo busca en el archivo core.css.
No se pueden editar los formatos cuando se setean las propiedades del mismo. Ni cambiar el estilo por código.


El truco para hacer esto en una página de elementos web es el siguiente:



  1. En la página de elementos web donde se desea implementar este cambio de imagen, agregar un Elemento Web Editor de Contenido.

  2. Editar y en las propiedades clic en el botón Editor de Código Fuente y escribir ahí el estilo de la siguiente manera:

<style>
#MSOZoneCell_WebPart_WPQ_ TABLE TR TD TABLE TR TD .ms-WPTITLE {BACKGROUND-IMAGE:url(\_layouts\images\nom_imagen.gif);font-weight:bold;font-family:Tahoma,sans-serif;color:#ffffff;font-size:10pt;}#MSOZoneCell_WebPart_WPQ_ TABLE TR TD TABLE TR TD .ms-WPHeader {BACKGROUND-IMAGE:url(\_layouts\images\nom_imagen.gif);}</style>

Donde:
#MSOZoneCell_WebPart_WPQ_ será reemplazado por el webpart al que corresponda aplicar el cambio de estilo, por ejemplo:

#MSOZoneCell_WebPartWPQ3
El número 3 del ejemplo corresponde al nro. de orden en el que fue definido el elemento web en la página.