2010-04-15 9 views
7

Quiero utilizar un valor de Enum para los tipos de parámetros de VaryByCustom que admitiré, ¿es posible hacer esto?Establecer valor de caché de salida de página VaryByCustom mediante programación

Traté de colocarlo en la propia página

<%@ OutputCache Duration="600" VaryByParam="none" 
      VaryByCustom='<%=VaryByCustomType.IsAuthenticated.ToString(); %>' %> 

Pero esto devuelve toda la cadena literal "<%=VaryByCustomType.IsAuthenticated.ToString(); %>" dentro de mi global.asax ¿hay alguna manera de hacer esto ya sea en la propia página o desde el código subyacente? ¿O es simplemente algo que tengo que aceptar es puramente cadenas mágicas y no puedo hacer nada para agregarle seguridad?

Respuesta

8

En lugar de utilizar la directiva @Outputcache, intente hacerlo con el código de la página. p.ej.

void Page_Init() { 
    var outputCacheSettings = new OutputCacheParameters() { 
     Duration = 600, 
     VaryByCustom = VaryByCustomType.IsAuthenticated.ToString() 
    }; 
    InitOutputCache(outputCacheSettings); 
} 
+0

Esto se parece a la respuesta que estaba buscando sin embargo mirando http://msdn.microsoft.com/en-us/library/ms153473.aspx le atribuya observaciones no utilizar este método, cualquier oportunidad de ¿tiene algún conocimiento sobre por qué MSDN diría eso y aún así expone este método? ¿O qué implicaciones tiene invocarlo yo mismo? –

+0

Francamente, esta es una documentación obsoleta que data de los 2.0 días y nunca fue actualizada. Esta es en realidad la llamada que se genera para usted cuando usa la directiva. Como alternativa, también puede utilizar la técnica que se describe en este hilo: http://stackoverflow.com/questions/1043112/programatically-control-output-caching-disable-or-enable-cache-according-to-par –

+0

¡Muchas gracias David! –

Cuestiones relacionadas