Ich versuche, OutputCaching in meiner ASP.NET MVC-Website zu verwenden. Problem ist, wenn ich versuche, den Wert von einem my querystring params zu ändern, gibt es die Daten für das erste Element zurück, das angefordert wurde!Caching funktioniert nicht richtig in meiner ASP.NET MVC-Website?
Hier ist mein Code (mit den param Namen geändert) ...
[ApiAuthorize]
[HandleErrorAsJson]
public class SearchController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(Duration = 60, VaryByParam = "*")]
public ActionResult ScoreCard(string foo, byte? bar, byte? pewpew)
{
..
}
}
- Anmerkung 1: ApiAuthorize - benutzerdefinierte Attribute, die für einen Abfragezeichenfolgeflag param genannten 'Key' überprüft und überprüft ein im Speicher-Wörterbuch, um zu sehen, ob es existiert.
- HINWEIS 2: HandleErrorAsJson - benutzerdefiniertes Attribut, das die Fehlermeldung als json zurückgibt, wenn eine Ausnahme ausgelöst wurde/wird.
und hier zwei Beispiel Anrufe i auf diese Aktion zu machen bin: -
- /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
so die Daten aus dem ersten Aufruf (foo = Hallo Welt, Pew Pew) wird als 200 OK zurückgegeben. Dann gibt der zweite api-Anruf eine 200 OK zurück, aber mit den Daten des vorherigen Anrufs.
Außerdem verwende ich keinen Proxy-Server. Wenn ich das OutputCache-Attribut auskommentiere, ist alles gut.
Ich habe auch versucht die folgenden (manuell jedes Mal, wenn ich in den Cache benötigen Auflistung) .....
[OutputCache(Duration = 60, VaryByParam = "foo,key,bar,pewpew")]
Kein Glück :(
Beachten Sie, wie ich sicher machen müssen, dass i Fügen Sie den API-Parameter 'Key' als Teil des eindeutigen Cache-Schlüssels hinzu. Ich möchte nicht, dass Benutzer dasselbe suchen, aber wenn die zweite Person nicht den richtigen Schlüssel hat, sollten sie kein zwischengespeichertes Ergebnis erhalten , aber eine Fehlermeldung (technisch ist es eine 401 nicht autorisierte, aber sowieso) ...
Thou ghts?
+1 mehr direkt auf die Frage in der Nähe konzentriert. obwohl ich nicht denke, dass es das einzige Problem ist, das er hier hat. antwortete auf deinen Kommentar unten auch. – dove