OutputCache controller attribute vary by user role? Is this possible in .net MVC?

Take a look at VaryByCustom.

http://msdn.microsoft.com/en-us/library/system.web.httpapplication.getvarybycustomstring.aspx


[Careful: This answer was valid as of 2011]

We add the OutputCache directive like this:

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

In MVC, add this attribute to your action

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

Then, in the Global.asax file

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); 
}

Tags:

Asp.Net Mvc