Estoy tratando de utilizar OutputCaching en mi sitio web ASP.NET MVC. El problema es que cuando trato de cambiar el valor de uno de mis parámetros de cadena de consulta, ¡devuelve los datos para el primer elemento que se solicitó!El almacenamiento en caché no funciona bien en mi sitio web ASP.NET MVC?
Aquí está mi código (con los nombres cambiados) param ...
[ApiAuthorize]
[HandleErrorAsJson]
public class SearchController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(Duration = 60, VaryByParam = "*")]
public ActionResult ScoreCard(string foo, byte? bar, byte? pewpew)
{
..
}
}
- NOTA 1: ApiAuthorize - atributo personalizado que comprueba si un parámetro de cadena de consulta llamado 'clave' y comprueba en el diccionario de una memoria, para ver si existe
- NOTA 2: HandleErrorAsJson - atributo personalizado que devuelve el mensaje de error como json si se lanzó/se arroja una excepción.
y aquí es una llamada a la muestra que estoy haciendo a esta acción: -
- /GET http://api.MySite.com/search/scorecard?foo=hello+world,+PewPew&key=abcd1234&bar=2
- /GET http://api.MySite.com/search/scorecard?foo=invalid+search+stuff&key=abcd1234&bar=2
por lo que los datos de la primera llamada (foo = hola mundo, Pew Pew) se devuelve como 200 OK. Luego, la segunda llamada api devuelve un 200 OK pero con los datos de la llamada anterior.
Además, no estoy utilizando ningún servidor proxy. Si comento el atributo OutputCache, todo está bien.
También he probado los siguientes (lista manualmente cada vez que necesito caché) .....
[OutputCache(Duration = 60, VaryByParam = "foo,key,bar,pewpew")]
No hubo suerte :(
Aviso cómo necesito para asegurarse de que i incluir el parámetro API 'clave' como parte de la clave única de caché. No quiero que las personas busquen lo mismo, pero si la segunda persona no tiene la clave correcta, no deberían obtener un resultado en caché , pero un mensaje de error (técnicamente, es un 401 no autorizado, pero de todos modos) ...
Thou ghts?
+1 más se centró directamente en la pregunta de la mano. aunque no creo que sea el único problema que tiene aquí. respondió a su comentario a continuación también. – dove