nella mia applicazione asp.net mvc sto usando l'attributo OutputCache su diversi metodi di azione. È possibile visualizzare le voci correnti sulla cache relative all'attributo OutputCache? Se cito su System.Web.HttpContext.Current.Cache
non trovo questo tipo di voce. Grazie in anticipo F.lista OutputCache voce
risposta
Output Cache non è pubblicamente accessibile, quindi non lo troverai in System.Web.HttpContext.Current.Cache
. In ASP.NET 2 è contenuto nel membro di CacheInternal
, che si può intuire dal nome è un membro privato di una classe astratta interna. È possibile recuperarlo con la riflessione, anche se non è un compito facile.
anche se si recupera lo vedrai che contiene tutti i tipi di voci di cache interne come i file di configurazione della cache percorso, cache delle classi generati dinamicamente, funzionalità mobili, cache di risposta prima (questo è il tipo degli elementi della cache di uscita).
Si supponga di poter filtrare gli elementi relativi alla cache di output. Il problema è che non contengono molte informazioni leggibili dall'uomo oltre alla chiave e alla risposta grezza (come array di byte). La chiave generalmente consiste in informazioni se si utilizza il metodo GET (a1) o POST (a2), il nome del sito, l'url relativo alla radice e l'hash dei parametri dipendenti.
Suppongo che fosse un punto dolente comune, quindi in ASP.NET 4 è stato introdotto un nuovo concetto di provider di cache di output personalizzati. È possibile implementare il proprio provider di cache di output ereditato da OutputCacheProvider e fornire un metodo che restituisce tutte le voci. Puoi dare un'occhiata a questo articolo - http://weblogs.asp.net/gunnarpeipman/archive/2009/11/19/asp-net-4-0-writing-custom-output-cache-providers.aspx. Personalmente non ho guardato nella nuova infrastruttura di OutputCache, quindi se trovi qualcosa sarà interessante scriverne.
Questo è il codice per recuperare le voci della cache interna. Puoi sfogliare i loro valori durante il debug in Visual Studio:
Type runtimeType = typeof(HttpRuntime);
PropertyInfo ci = runtimeType.GetProperty(
"CacheInternal",
BindingFlags.NonPublic | BindingFlags.Static);
Object cache = ci.GetValue(ci, new object[0]);
FieldInfo cachesInfo = cache.GetType().GetField(
"_caches",
BindingFlags.NonPublic | BindingFlags.Instance);
object cacheEntries = cachesInfo.GetValue(cache);
List<object> outputCacheEntries = new List<object>();
foreach (Object singleCache in cacheEntries as Array)
{
FieldInfo singleCacheInfo =
singleCache.GetType().GetField("_entries",
BindingFlags.NonPublic | BindingFlags.Instance);
object entries = singleCacheInfo.GetValue(singleCache);
foreach (DictionaryEntry cacheEntry in entries as Hashtable)
{
FieldInfo cacheEntryInfo = cacheEntry.Value.GetType().GetField("_value",
BindingFlags.NonPublic | BindingFlags.Instance);
object value = cacheEntryInfo.GetValue(cacheEntry.Value);
if (value.GetType().Name == "CachedRawResponse")
{
outputCacheEntries.Add(value);
}
}
}
Ci proverò lunedì e ti dirò i risultati. Grazie. – Mauro
Ciao Branislav, c'è un modo per filtrare la cache al fine di ottenere solo le mie voci? Grazie – Mauro
Sì, è possibile trovare le voci della cache di output raccolte nell'elenco outputCacheEntries. Purtroppo non c'è molto da vedere. Tuttavia spero che aiuti il tuo caso. –
- 1. asp.net outputcache e cookies
- 2. ASP.NET MVC: problema con OutputCache
- 3. Modifica OutputCache in base all'URL
- 4. OutputCache VaryByContentEncodings gzip non funziona
- 5. ASP.Net MVC4 Mobile-Aware OutputCache
- 6. Aggiunta voce alle liste all'interno di una lista di comprensione
- 7. MS costruire copiare una lista di directory memorizzati nella voce
- 8. Python: Get indice della voce del dizionario nella lista
- 9. In Python, trovano voce nella lista delle dicts, utilizzando bisect
- 10. Utilizzo di Volley e Gson: Parse voce e lista articoli
- 11. Ordina una lista di tuple di 2 ° voce (valore intero)
- 12. espressione di HelperResult per formattare voce da una lista
- 13. Aggiunta di una voce di selezione in bianco per la lista in lista di goccia
- 14. Crea nuovo elenco prendendo prima voce dalla prima lista, e l'ultimo elemento dalla seconda lista
- 15. MVC3 OutputCache VaryByHeader = non Cookie stato impostato
- 16. OutputCache dilemma con autenticazione in ASP.NET MVC
- 17. ASP.NET MVC OutputCache non memorizza intestazioni personalizzate
- 18. OutputCache Posizione = Cliente non sembra funzionare
- 19. Asp.net MVC OutputCache e la scadenza
- 20. OutputCache e RenderAction cache intera pagina
- 21. ASP.NET MVC 3 Custom RouteBase e OutputCache
- 22. ASP.NET (MVC) Outputcache e richieste simultanee
- 23. Disabilita OutputCache sul sistema di sviluppo
- 24. MVC3 OutputCache registrato solo utente caching
- 25. ASP.NET OutputCache varyByParam non funziona in Web.config
- 26. ASP.NET MVC raggiunge outputcache per ogni azione
- 27. ActionBar discesa Spinner voce default prima voce
- 28. Indice LINQDi una voce specifica
- 29. Centro QML ListView evidenziato voce
- 30. Voce dizionario
nessuno può aiutarmi ??? – tartafe