SharePoint 2010: Como realizar redirecciones en eventos de tipo asíncrono!

De la misma forma que podemos utilizar páginas de cancelación personalizadas para eventos síncronos, vamos a tener la posibilidad de hacer redirecciones en eventos de tipo asíncrono. Os recuerdo los artículos relativos a páginas cancelación personalizadas para eventos de tipo síncrono:

Para poder realizar redirecciones en eventos de tipo asíncrono:

  • En Visual Studio 2010 creamos un proyecto de tipo “Empty SharePoint Project”. Elegimos como tipo de despliegue “Deploy as farm solution”.
  • Añadimos al proyecto un elemento de tipo Event Receiver y en el asistente de configuración especificamos que vamos a controlar los eventos de tipo ItemAdded para listas de tipo “Links” en nuestro sitio.

image

  • Modificamos el archivo Elements.xml que permite registrar el manejador para que se pueda realizar cierto procesado síncrono al engancharnos al evento “ItemAdded” lanzado por SharePoint cuando se crea un elemento en una lista de tipo Links. Para ello, añadimos un elemento de tipo <Synchronization> que configuramos con el valor Synchronous tal y como se muestra a continuación.
   1: <?xml version="1.0" encoding="utf-8"?>

   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

   3:   <Receivers ListTemplateId="103">

   4:       <Receiver>

   5:         <Name>SPLinkAddedERItemAdded</Name>

   6:         <Type>ItemAdded</Type>

   7:         <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>

   8:         <Class>SPERedirectionDemo.SPLinkAddedER.SPLinkAddedER</Class>

   9:         <SequenceNumber>10000</SequenceNumber>

  10:         <Synchronization>Synchronous</Synchronization>

  11:       </Receiver>

  12:   </Receivers>

  13: </Elements>

De esta forma estamos configurando la propiedad Synchronization en la definición del manejador de eventos. Esta propiedad es un miembro nuevo que se incorpora a la clase SPEventReceiverDefininiton.

  • A continuación, pasamos a codificar la lógica del manejador de eventos. Añadimos en primer lugar una referencia a System.Web.
  • En la clase manejadora, añadimos una directiva using a System.Web y un miembro de tipo HttpContext.
  • Añadimos un constructor a la clase para poder inicializar el objeto HttpContext.
   1: HttpContext httpCurrentContext;       

   2:  

   3: public SPLinkAddedER()

   4: {

   5:     if (httpCurrentContext == null)

   6:     {

   7:         httpCurrentContext = HttpContext.Current;

   8:     }

   9: }

  • Finalmente, codificamos el evento ItemAdded() para poder hacer la rediección mediante el uso de SPUtility.Redirect():
   1: public override void ItemAdded(SPItemEventProperties properties)

   2: {      

   3:     SPUtility.Redirect("http://www.ciin.es",

   4:          SPRedirectFlags.Trusted, httpCurrentContext);

   5: }

  • El código completo de toda la clase manejadora es el siguiente:
   1: using System;

   2: using System.Security.Permissions;

   3: using Microsoft.SharePoint;

   4: using Microsoft.SharePoint.Security;

   5: using Microsoft.SharePoint.Utilities;

   6: using Microsoft.SharePoint.Workflow;

   7:  

   8: //Namespaces needed

   9: using System.Web;

  10:  

  11: namespace SPERedirectionDemo.SPLinkAddedER

  12: {

  13:     /// <summary>

  14:     /// List Item Events

  15:     /// </summary>

  16:     public class SPLinkAddedER : SPItemEventReceiver

  17:     {

  18:         HttpContext httpCurrentContext;       

  19:  

  20:         public SPLinkAddedER()

  21:         {

  22:             if (httpCurrentContext == null)

  23:             {

  24:                 httpCurrentContext = HttpContext.Current;

  25:             }

  26:         }

  27:  

  28:        /// <summary>

  29:        /// An item was added.

  30:        /// </summary>

  31:        public override void ItemAdded(SPItemEventProperties properties)

  32:        {      

  33:            SPUtility.Redirect("http://www.ciin.es",

  34:                 SPRedirectFlags.Trusted, httpCurrentContext);

  35:        }

  36:  

  37:     }

  38: }

  • Desplegamos la solución y añadimos un elemento en una lista de tipo Links de nuestro sitio de trabajo.
  • Comprobamos como tras pulsar el correspondiente botón de guardar, la redirección se realiza tal y como se ha configurado.
image image

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Un comentario en “SharePoint 2010: Como realizar redirecciones en eventos de tipo asíncrono!”

Deja un comentario

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