Blog de Francisco Velázquez

otro blog personal

Archive for October 2011

Modificar el valor de Request.Param o QueryString

with one comment

Hace unos días necesité modificar el valor de Request.Param y de la QueryString en una página ASP.NET. Parece que no es algo común pero sin embargo, había gente que también había necesitado hacerlo.

La manera de hacerlo fue usando un HttpModule y usando un poco de Reflection. La verdad algo bastante sencillo de hacer y con un buen resultado.

    public class ChangeParamsModule : IHttpModule
    {
        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public void Init(HttpApplication context)
        {
            context.BeginRequest += (sender, e) =>
            {
                HttpApplication httpContext = (HttpApplication)sender;
                // reflect to getting readonly property
                PropertyInfo isReadOnly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);

                // make collection editable
                isReadOnly.SetValue(httpContext.Request.QueryString, false, null);
                isReadOnly.SetValue(httpContext.Request.Params, false, null);

                httpContext.Request.QueryString.Set("nuevoParam", "nuevoValor");
                httpContext.Request.Params.Set("nuevoParm", "nuevoValor");

                // make collection readonly again
                isReadOnly.SetValue(httpContext.Request.QueryString, true, null);
                isReadOnly.SetValue(httpContext.Request.Params, true, null);
            };
        }
    }

Written by fravelgue

October 19, 2011 at 5:47 pm

ASP.NET sirviendo contenido estático

leave a comment »

Dos interesantes propuestas para mejorar el rendimiento de nuestras aplicaciones ASP.NET, y del mismo blog, al que habrá que echarle un ojo.

Cargar contenido estático de otro dominio de forma automática.

Eliminar las cookies de contenido estático.

Si a esto le añadimos un proxy inverso delante de nuestro IIS, ganaremos bastante en rendimiento.

Written by fravelgue

October 19, 2011 at 5:37 pm

Posted in development

Tagged with , ,

ASP.NET SessionState Cookieless

leave a comment »

Llevo varios días intentando modificar el comportamiento de cookieless en la sesión. Comencé queriendo heredar SessionIDManager pero los métodos virtuales expuestos no lo permiten. Después intenté desarrollar mi propio SessionStateModule y aunque es posible, la verdad, es que la mayoría de la funcionalidad es interna o privada. A pesar de tener el código de mono y haber investigado mucho con reflector no he podido encontrar la solución todavía.

Pienso que esta parte del framework no esta lo suficientemente clara y el abuso de internal y private sólo intentan ocultar una mala implementación.

El equipo de MVC se vangloria de lo extensible que es su framework, pues valdría la pena que le echaran un vistazo a esta parte del framework. Porque la verdad no termino de enterder porque no es posible realizar esto de una manera sencilla.

Written by fravelgue

October 14, 2011 at 4:00 pm