Tengo un problema con IE almacenando en caché los resultados de un método de acción.Cómo detener el almacenamiento en caché de MVC los resultados de invocar un método de acción?
Otros artículos que encontré están relacionados con la seguridad y el atributo [Autorizar]. Este problema no tiene nada que ver con la seguridad.
Este es un método muy simple de "registrar un voto, obtener el promedio, devolver el promedio y el número de votos". Lo único ligeramente interesante es que se invoca a través de Ajax y devuelve un objeto Json. Creo que es el objeto Json el que se almacena en caché.
Cuando lo ejecuto desde FireFox y miro el tráfico XHR con Firebug, todo funciona perfectamente. Sin embargo, en IE 8, el gráfico "throbber" nunca tiene tiempo para mostrarse y los elementos de página que muestran el promedio "nuevo" y el recuento que se inyectan en la página con jQuery nunca son diferentes.
Necesito una forma de decirle a MVC que nunca guarde en caché este método de acción.
Este artículo parece abordar el problema, pero no puedo entenderlo: Prevent Caching of Attributes in ASP.NET MVC, force Attribute Execution every time an Action is Executed
necesito un poco más de contexto para la solución de entender cómo extender AuthorizationAttribute. Por favor, dirija su respuesta como si estuviera hablando con alguien que no tiene un conocimiento profundo de MVC, incluso si eso significa responder con un artículo sobre algunos requisitos básicos/requisitos que se requieren.
Gracias,
Trey Carroll
Gracias Craig. Esto es exactamente lo que necesitaba. Sin embargo, acabo de agregar la clase al nivel de raíz del proyecto MVC, que estoy seguro es incorrecta. ¿Cuál sería la ubicación correcta para esta clase en una solución MVC 2? –
Depende de usted. Esto es, efectivamente, código de marco. Puede colocarlo en una biblioteca de clases separada o en un espacio de nombres "Mvc" en su aplicación web. –
Esto es mucho más simple en MVC ahora, sólo tiene que utilizar OutputCache y establecer la duración de cero segundos: [OutputCache (Duración = 0)] pública ActionResult ciudades (int provinceId) {var myData = SomeClassInstance.SomeMethod(); return Json (myData, JsonRequestBehavior.AllowGet); } –