sto cercando di utilizzare OutputCaching nel mio sito Web ASP.NET MVC. Il problema è che quando provo a cambiare il valore di uno dei miei parametri querystring, restituisco i dati per il primo oggetto richiesto!Il caching non funziona correttamente nel mio sito Web ASP.NET MVC?
Ecco il mio codice (con i nomi cambiati 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 - attributo personalizzato che verifica la presenza di un parametro querystring chiamato 'chiave' e controlla un dizionario di memoria, per vedere se esiste
- NOTA 2: HandleErrorAsJson - attributo personalizzato che restituisce il messaggio di errore come json se è stata/è stata generata un'eccezione.
ed ecco due chiamate di esempio che sto facendo a questa azione: -
- /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
in modo che i dati della prima chiamata (foo = ciao mondo, Pew Pew) viene restituito come 200 OK. Quindi la seconda chiamata api restituisce 200 OK ma con i dati della chiamata precedente.
Inoltre, non sto utilizzando alcun server proxy. Se commento l'attributo OutputCache, tutto va bene.
Ho anche provato il seguente (messa manualmente ogni volta ho bisogno di cache) .....
[OutputCache(Duration = 60, VaryByParam = "foo,key,bar,pewpew")]
Nessuna fortuna :(
Notate come ho bisogno di fare in modo che i includi il parametro "Chiave" dell'API come parte della chiave univoca della cache. Non voglio che le persone cerchino la stessa cosa, ma se la seconda persona non ha la chiave giusta, non dovrebbero ottenere un risultato memorizzato nella cache , ma un messaggio di errore (tecnicamente, è un 401 non autorizzato, ma comunque) ...
Tu combatte?
+1 più direttamente focalizzato sulla domanda a portata di mano. anche se non penso che sia l'unico problema che ha qui. ha risposto anche al tuo commento qui sotto. – dove