2010-02-18 11 views

Respuesta

5

le sumamos la directiva OutputCache así:

<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="SessionID" %> 

En MVC, agregue este atributo a su acción

[OutputCache(Duration = 60, VaryByParam="None", VaryByCustom="SessionID")] 

A continuación, en el archivo Global.asax

Public override string GetVaryByCustomString(HttpContext context, string arg) 
{ 
    if(arg.ToLower() == "sessionid") 
    { 
    HttpCookie cookie = context.Request.Cookies["ASP.NET_SessionID"]; 
    if(cookie != null) 
     return cookie.Value; 
    } 
    return base.GetVaryByCustomString(context, arg); 
} 
+3

Puede obtener el nombre de la cookie de sesión utilizando la [SessionStateSection] (http://msdn.microsoft.com/en-us/library/system.web.configuration.sessionstatesection (v = vs.110) .aspx) (para evitar la codificación rígida del nombre de cookie predeterminado). Además, debe hacer una comparación insensible a mayúsculas y minúsculas en el argumento, simplemente se ve mejor. Puedes consultar mi versión de esto en esta publicación de blog: http://blog.danielcorreia.net/asp-net-mvc-vary-by-current-user/ –

Cuestiones relacionadas