Automatizar App_Offline para SharePoint

ASP.NET incluye una funcionalidad par indicar que estamos realizando tareas de mantenimiento sobre nuestros servidores de forma que se muestre siempre una página por defecto. Agregando una página con el nombre “AppOffline.htm” en la raíz del directorio virtual del sitio web, ASP.NET interpretará automáticamente que estamos realizando tareas de mantenimiento y dejará de responder a las peticiones y devolviendo directamente el contenido de la página html, de esta forma podremos realizar tantos cambios de estructuras e iisresets como necesitemos sin que se deje de responder a las peticiones de los usuarios.

image image

SharePoint 2010 está construido sobre ASP.NET por lo que también funciona de forma similar, podemos coger manualmente y copiar el fichero en el directorio virtual que nos crea, ahora bien, esa no es la manera adecuada sobre todo si disponemos de una granja de servidores grande o no tenemos acceso a los servidores directamente. Para solucionarlo he creado una solución WSP de SharePoint que he subido a MSDN compuesta por una feature que al activarla despliega en todos los servidores de la granja el fichero App_Offline.htm en la aplicación web que le indiquemos, de forma que es tan fácil como habilitar o deshabilitar la feature.

image 

La solución está desarrollada sobre Visual Studio 2010 y está compuesta por una feature con un EventReceiver que al activarse instala un job de SharePoint encargado de copiar el fichero App_Offline.htm en todos los servidores de la granja de SharePoint par la aplicación web indicada.

Desde Visual Studio 2010 creamos un proyecto “Empty SharePoint Project”  del tipo “Farm solution” para que podamos desplegar elementos y tengamos acceso al modelo de objetos por encima de SPSite. Desde el icono del proyecto “Features” con el botón derecho añadimos una nueva featura indicando el nombre y el ámbito de la feature, en este caso Site (Colección de Sitios).

imageimage image

Para poder distribuir el fichero App_Offline.htm podremos agregar un módulo de SharePoint o bien indicando un “Mapped folder” de SharePoint.

Para conseguir la ejecución del job al activar la feature añadiremos un event feature seleccionando la feature recién creada y con botón derecho marcaremos “Add event receiver”, añadiremos el código de registro del job indícándole que se ejecute inmediatamente.

image image

Ahora quedaría por implementar la ejecución del job creando una clase que herede de SPJobDefinition .

image

Por último quedaría compilar el proyecto y empaquetarlo mediante la opción “Package”, esto generará en el directorio bin del proyecto la solución con extensión WSP.

 

Aunque este ejemplo está pensado para desplegar el fichero App_Offline también podremos aprovechar su funcionamiento para desplegar otros ficheros o incluso hacer modificaciones muy específicas aunque por supuesto cuanto menos nos salgamos del estándar mejor 😉

Espero que os sirva el ejemplo.

http://code.msdn.microsoft.com/appofflineformoss

Publicado por

Mario Cortés

Mario Cortés Flores es MVP en Office 365, trabaja en Plain Concepts como Team Lead y escribe habitualmente en geeks.ms/blogs/mcortes y en Twitter @mariocortesf. Podréis encontrarlo colaborando activamente con la comunidad de MadPoint y SUGES

Un comentario en “Automatizar App_Offline para SharePoint”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *