SharePoint 2010: ¿Para qué sirve la propiedad AllowUnsafeUpdates?

Si algo caracteriza a SharePoint es que está diseñado con la idea de que sea seguro y se eviten por ejemplo situaciones de cross-site scripting cuando estamos creando artefactos en los que se hace uso del modelo de objetos (MO)…y de aquí viene la idea de escribir este artículo. Básicamente SharePoint aplica una comprobación de seguridad cada vez que se realiza un cambio de información o datos a través del MO en peticiones HTTP. De hecho, los propios formularios de SharePoint utilizan un “form digest control” para forzar y garantizar que las operaciones sean seguras. Esto implica que cuando se realizan cambios en datos de SharePoint a través del MO en un GET, SharePoint “escupirá” una excepción de validación de seguridad…algo así como “Microsoft.SharePoint.SPException: The Security validation for this page is invalid”…la pregunta que surge aquí es si esta validación la podemos “saltar” en formularios o páginas que no herden de la propia infraestructura de páginas de SharePoint…la respuesta es que sí a través de la propiedad AllowUnsafeUpdates presente en SPSite y SPWeb:

   1: SPWeb spwWeb = SPContext.Current.Web:

   2: SPList splLista = spwWeb.Lists["Mi Lista"];

   3: try{

   4:     spwWeb.AllowUnsafeUpdates=true;

   5:     splLista.Title="Nuevo Título";

   6:     splLista.Update();

   7: }

   8: finally{

   9:     spwWeb.AllowUnsafeUpdates=false;

  10: }

Referencias:

SharePoint 2010: Como tener BD’s de contenido diferentes por colección de sitios (I)!

Como ocurría en SharePoint 2007, en SharePoint 2010 a la hora de crear nuevas colecciones de sitios tenemos la posibilidad de hacerlo sobre bases de datos (BDs) de contenidos independientes en lugar de hacerlo sobre la BD creada inicialmente cuando se creo la aplicación web bajo la que se están definiendo las colecciones de sitios. El proceso a seguir para esta configuración es el siguiente:

  • En la Administración Central de SharePoint 2010 nos vamos a la sección Bases de Datos dentro Administración de Aplicaciones. Aquí pulsamos sobre el enlace “Administrar bases de datos de contenidos”.
  • En la página que se abre, podemos ver el listado de BDs de contenidos disponibles para cada aplicación web que seleccionemos. En el caso de ejemplo, tenemos una única BD de contenidos que procedemos a editar a través del correspondiente enlace.
  • En la página de configuración de la BD cambiamos el estado de la misma a “Sin conexión” de manera que se puede seguir trabajando con las colecciones de sitios ya creadas en dicha BD, pero no se pueden crear nuevas colecciones sobre la misma.
image image image
  • De vuelta al listado de BD’s de contenido veremos que el estado de la BD aparece como “Detenido”. Si pulsamos sobre “Agregar nueva base de datos de contenido” procederemos a crear una nueva BD de contenidos para la aplicación web.
  • En este caso, los parámetros mínimos para su creación son el nombre del servidor de BD y el nombre de la BD de contenidos a crear.
  • Una vez que hemos creado la BD, veremos que el estado de la misma en el listado de BDs de contenidos vinculadas a la aplicación web es “Iniciado” de manera que cada nueva colección de sitios que se cree en la aplicación web residirá en esta BD.
image image image

Productividad: Nuevo video de Microsoft sobre la visión particular de Microsoft!

Cada cierto tiempo Microsoft publica videos en torno a su visión particular de la tecnología en los próximos años y anticipando como será la forma que tendremos de interactuar con la misma, siempre con un cierto toque futurista claro está. El último video enfocado a temas de productividad lo podéis localizar desde este enlace y os lo dejo en este post…merece la pena.

Productivity Future Vision (2011)

SharePoint 2010: Como usar un entorno compartido de CloudShare durante 14 días!

Como ya he comentado en varios posts, en mi caso tengo mi entorno de pruebas y desarrollo de SharePoint 2010 montado en CloudShare lo que me facilita el disponer del HW adecuado para poder aprovechar toda las capacidades de la plataforma sin problemas de rendimiento, realizar snapshots del entorno de manera que pueda volver a una versión estable en cualquier momento o compartir este entorno a través de la siguiente Url: http://use.cloudshare.com/Pro/ShareEnv/QAU2K5Q5K4KH. De manera que cualquiera puede durante 14 días usar dicho entorno…y precisamente sobre estos 14 días va el post de hoy ya que el tiempo de vida inicial del entorno una vez que se usa la Url anterior y se crea la cuenta de CloudShare es de 2 días, por lo que para poder usarlo durante 14 días en modo trial tenemos que hacer lo siguiente:

  • En primer lugar, tras introducir la Url anterior en nuestro navegador habitual tendremos que rellenar un formulario para crear una cuenta de CloudShare.
  • Una vez introducidos los datos y tras realizar el envío de los mismos, recibiremos en el correo electrónico un código de activación que tenemos que usar en la siguiente página que se muestra en el proceso de dar de alta la cuenta.
  • Tras pulsar “Verify” seremos redirigidos al entorno compartido que está basado en el último snapshot realizado por el usuario de CloudShare y que ha compartido con el enlace anterior (denominado Permalink en la plataforma CloudShare). Este entorno lo podremos usar durante 2 días, y para poder extender su uso a los 14 días que tenemos para probar CloudShare con la cuenta Trial que acabamos de crear pulsamos en primer lugar el botón “View environment”.
image image image
  • A continuación, accedemos al entorno de CloudShare y esperamos a que las máquinas que lo constituyen se hayan iniciado. En ese momento, se habilitará el botón “Take ownership” que nos permite hacernos propietarios de ese entorno compartido durante el tiempo de vida de la cuenta Trial, es decir, los 14 días comentados.
  • Tras pulsar ese botón, podremos comprobar que efectivamente el tiempo de vida del entorno ha pasado de los 2 días iniciales a loas 14 comentados.
image image

Para concluir el post, quería comentaros que esta funcionalidad de crear y compartir entornos con buenas prestaciones en términos de HW, además de otras muchas capacidades, la tenéis disponible dentro del servicio CloudShare Pro Plus y si estás interesados en adquirir el servicio puedo conseguiros descuentos. Finalmente, os recuerdo otros posts sobre el uso de CloudShare con SharePoint:

SharePoint 2010: Cómo crear un nivel de permisos a partir de uno existente (I)!

Como sabéis, todo sitio de SharePoint 2010 dispone por defecto de unos niveles de permisos que son función de la plantilla de sitio en la que se basa el sitio y que definen una agrupación de permisos individuales. Por supuesto, es posible crear nuevos niveles de permisos desde cero o bien a partir de uno existente:

  • Entramos en la página de configuración del sitio y bajo la sección Usuarios y permisos pulsamos sobre Permisos el sitio.
  • En la página con el listado de grupos de SharePoint del sitio y el nivel de permisos asociado, pulsamos sobre la opción “Niveles de permisos” de la Ribbon.
  • En la nueva página que se abre podremos crear un nuevo nivel de permisos desde cero o bien visualizar el detalle de un nivel existente para poder crear un nuevo nivel basado en el mismo.
image image image
  • Entramos en la página de detalle de uno de los niveles de permisos existentes.
  • Pulsamos el botón “Copiar nivel de permisos”.
  • A continuación se muestra una nueva página en la que podremos especificar el nombre del nuevo nivel de permisos y añadir nuevos permisos individuales si es necesario.
image image image

SharePoint Online: Las actualizaciones prometidas ya están aquí :-)!

Como comenté en este artículo y se reveló en la SharePoint Conference de este año, la primera actualización para SharePoint Online estaba al caer…y ya ha caído. Esta mañana, después del correspondiente aviso por correo electrónico, pude comprobar como en la administración de SharePoint Online aparecen dos nuevos enlaces relativos a la conectividad de datos empresariales (o BCS) y el servicio de almacenamiento seguro (SSS):

  • Al acceder a la Tenant Administration de SharePoint Online, aparecen los dos nuevos enlaces comentados.
  • El primero de los enlaces permite acceder a la administración de los tipos de contenido externo que tengamos disponibles y realizar algunas de las configuraciones que conocemos de SharePoint On-Premise como dar permisos en los tipos de contenido externo disponibles, asignar administradores al almacén de metadatos, etc.
  • En el caso del servicio de almacenamiento seguro podremos crear IDs de aplicación que luego podamos usar para conectarnos a sistemas externos (os recuerdo que tiene que ser a través de servicios WCF).
image image image

Si navegamos a una de las colecciones de sitios disponibles, podremos ver que si eliminamos un sitio tenemos operativa y disponible la papelera de reciclaje de sitios:

image

SharePoint 2010: Desarrollo y depuración contra sitios remotos (I)!

Una pregunta habitual cuando se comienza a desarrollar en plataforma SharePoint es la relativa a como tiene que ser el entorno de desarrollo de manera que surgen interrogantes como: ¿Necesito tener instalado SharePoint 2010 en mi máquina de desarrollo? ¿Puedo evitar tener que instalarlo y sólo disponer de Visual Studio 2010? ¿Tiene sentido que todos los desarrolladores trabajen contra una misma instalación de SharePoint?, … seguro que a más de uno os han llegado este tipo de inquietudes. Lo primero que tenemos que tener en cuenta para ir respondiendo a las mismas es:

  • Los requerimientos de base para desarrollar contra SharePoint oficialmente publicados por Microsoft y expertos en la materia:
  • Aunque la recomendación es que cada desarrollador disponga de un entorno desarrollo completo de acuerdo a los requerimientos anteriores y teniendo en cuenta la flexibilidad de que disponemos para su configuración como ya comente en esta serie de posts, puede ser que en ciertos escenarios haya que buscar alternativas o workarounds no soportados y totalmente improductivos en el desarrollo en SharePoint que implique desarrollar en local sin tener instalado SharePoint 2010 y depurar de forma remota contra un servidor en el que si tengamos instalado SharePoint. Para que esto sea posible, y en función del tipo de solución (Sandbox vs Granja) tendremos que realizar una serie de configuraciones manuales en el servidor remoto de SharePoint como se indica en las siguientes referencias:
  • ¿Qué inconvenientes le veo yo a esta aproximación de desarrollo? Pues varios:
    • El primero, que tenemos que copiar el depurador de nuestro entorno de desarrollo al servidor…si se trata de un servidor de “desarrollo” esto no es tan malo, pero si es directamente el servidor de “pre-producción” ya estamos violando una de las reglas de que el ambiente de “pre-producción” debería ser una réplica al de producción…al meter estos ente extraño, estamos añadiendo una primera diferencia.
    • En segundo lugar, la creación y configuración de cuentas de depuración en el servidor que necesitemos para que la depuración remota sea posible.
    • En tercer lugar, el tiempo que tendremos que invertir (estas configuraciones no son inmediatas) para que la depuración remota esté operativa. Tiempo tanto de nuestros desarrolladores como de nuestro personal de IT.
    • Finalmente, y aunque la depuración remota es posible, en ningún sitio veréis que Microsoft recomiende su configuración y uso por sistema para crear soluciones para SharePoint…se debería utilizar la depuración remota cuando nos encontremos ante expedientes X en nuestros desarrollos que nos obliguen a depurar que está pasando en el servidor.

Finalmente os dejo una serie de referencias adicionales en torno a estas configuraciones que complementan a las ya comentadas: