viernes, 8 de febrero de 2013

ASP .NET - Cómo configurar un HttpModule en nuestro site

Hoy veremos como configurar un HttpModule en nuestro site. En primer lugar a modo muy resumido decir que un Module es una clase que podemos configurar para que toda petición HTTP que reciba nuestro site produzca una serie de determinados eventos a partir de los cuales podremos realizar acciones sobre la petición y/o redirigirla a donde creamos oportuno.

En primer lugar hemos de crear una clase en nuestro site y haremos que implemente la interfaz IHttpModule.
namespace AreaTIC.Code.Modules
{
  public class AreaTICModule:IHttpModule
  {
    public void Dispose()
    {
      throw new NotImplementedException();
    }

    public void Init(HttpApplication context)
    {
      throw new NotImplementedException();
    }
  }
}
Si nos fijamos en la imagen veremos que en la instancia HttpApplication tenemos acceso a determinados eventos que dependiendo que comportamiento necesitemos personalizar podemos delegar en un método privado de nuestro module.

ASP .NET  - Configurar HttpModule en nuestro site

A continuación implementaremos un método delegado "OnEndResponse" que se encargará de añadir un pie de página al response por defecto que ha devuelto el servidor, veamos como hacerlo:
namespace Web.Code.Modules
{
  public class AreaTICModule:IHttpModule
  {

    public void Dispose()
    {
       throw new NotImplementedException();
    }

    public void Init(HttpApplication context)
    {
       context.EndRequest += new EventHandler(this.OnEndRequest);
    }

    private void OnEndRequest(object sender, EventArgs e)
    {
       HttpApplication app = (HttpApplication)sender;
       app.Response.Write("AreaTIC © 2013");
    }
  }
}
Con esto habríamos programado que siempre que se produzca una petición a nuestro site, el servidor responderá con el contenido correspondiente pero siempre añadirá el texto "AreaTIC © 2013" al final del contenido de la página.

Por último veremos como configurar el site para que tenga en cuenta el Module personalizado que acabamos de crear, para ello añadiremos la siguiente configuración al archivo web.config del site. Dependiendo de la configuración del Pool de aplicaciones que ejecute el site en IIS variará el modo de registrar el module en web.config:

  • Canalización Clásica
  • <system.web>
      <httpModules>
        <add name="AreaTICModule" type="Web.Code.Modules.AreaTICModule"/>
      </httpModules>
    </system.web>
    

  • Integrada
  • <system.webServer>
      <modules runAllManagedModulesForAllRequests="true">
         <add name="AreaTICModule" type="Web.Code.Modules.AreaTICModule"/>
      </modules>
    </system.webServer>
    

Espero os sea de utilidad, recordar que podéis seguir areaTIC en las redes sociales!


No hay comentarios:

Publicar un comentario