dans mon application mvc asp.net J'utilise l'attribut OutputCache sur une méthode d'action différente. Est-il possible d'afficher les entrées actuelles sur le cache liées à l'attribut OutputCache? Si je cicle sur System.Web.HttpContext.Current.Cache
je ne trouve pas ce type d'entrée. Merci d'avance F.liste Entrée OutputCache
Répondre
Cache de sortie n'est pas accessible au public, donc vous ne le trouverez pas dans System.Web.HttpContext.Current.Cache
. Dans ASP.NET 2, il est contenu dans le membre _caches
de CacheInternal
, que vous pouvez deviner par son nom est un membre privé d'une classe abstraite interne. Il est possible de le récupérer avec réflexion, même si ce n'est pas une tâche facile. En outre, si vous le récupérez, vous verrez qu'il contient toutes sortes d'entrées de cache internes comme les fichiers de configuration, le cache de chemin, le cache de classe généré dynamiquement, les capacités mobiles, le cache de réponse brut.).
Disons que vous pouvez filtrer les éléments liés au cache de sortie. Le problème est qu'ils ne contiennent pas beaucoup d'informations lisibles par l'homme en dehors de la réponse clé et brute (comme tableau d'octets). La clé est généralement constituée d'informations si la méthode GET (a1) ou POST (a2) est utilisée, le nom du site, l'URL relative racine et le hachage des paramètres dépendants.
Je suppose que c'était un point commun, alors dans ASP.NET 4, un nouveau concept de fournisseurs de cache de sortie personnalisés a été introduit. Vous pouvez implémenter votre propre fournisseur de cache de sortie héritant de OutputCacheProvider et fournir une méthode qui renvoie toutes les entrées. Vous pouvez consulter cet article - http://weblogs.asp.net/gunnarpeipman/archive/2009/11/19/asp-net-4-0-writing-custom-output-cache-providers.aspx. Personnellement, je n'ai pas regardé dans la nouvelle infrastructure OutputCache, donc si vous trouvez quelque chose, il sera intéressant d'écrire à ce sujet.
Il s'agit du code permettant de récupérer les entrées de cache internes. Vous pouvez parcourir leurs valeurs lors du débogage dans 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);
}
}
}
Je vais essayer le lundi et vous donner des résultats. Je vous remercie. – Mauro
Salut Branislav, y a-t-il un moyen de filtrer le cache pour obtenir seulement mes entrées? Merci – Mauro
Oui, vous pouvez trouver les entrées de cache de sortie rassemblées dans la liste outputCacheEntries. Malheureusement, il n'y a pas grand chose à voir. Néanmoins, j'espère que cela aidera votre cas. –
- 1. OutputCache comportement étrange
- 2. ASP.NET MVC OutputCache JSONP
- 3. ASP.NET OutputCache et les publications
- 4. @OutputCache problème dans un UserControl
- 5. asp.net apache2/nginx Problème OutputCache
- 6. Changement OutputCache basé sur l'URL
- 7. ASP.NET MVC: Problème avec OutputCache
- 8. Centralisation des valeurs OutputCache dans ASP.Net?
- 9. Mise au point de OutputCache dans ASP.Net
- 10. Comment supprimer OutputCache par programme pour ascx?
- 11. Comment remplacer OutputCache de basecontroller en action?
- 12. OutputCache pour les pages dynamiques avec l'état
- 13. ASP.NET MVC: En-têtes OutputCache et http
- 14. Outputcache ne fonctionne pas avec le routage
- 15. Désactiver OutputCache sur le système de développement
- 16. Comment utiliser outputcache dans cette situation?
- 17. Comment activer OutputCache avec un IHttpHandler
- 18. méthode propre pour obtenir une entrée dans une liste et le définir comme la première entrée
- 19. entrée utilisateur test contre une liste en python
- 20. Entrée par défaut pour Selectbox mais pas dans la liste
- 21. Comment créer une entrée "type de liste" personnalisée à request.POST
- 22. Changing chaque entrée dans une liste retournée de Powershell
- 23. Afficher la liste GAE par entrée la plus récente
- 24. Suggérer la liste dans google maps rechercher entrée
- 25. Comment effacer OutputCache pour le site Web sans redémarrer l'application
- 26. Bug OutputCache avec VaryByParam = "None" avec MVC RC refresh
- 27. Asp.net Mvc OutputCache attribut et en faisant glisser l'expiration
- 28. Baser ASP.NET Outputcache sur le paramètre querystring session AND
- 29. ASP.NET MVC: En-têtes OutputCache et http - Cache-Control
- 30. Autoriser une seule entrée par utilisateur dans une liste - "Feature" ListReceiver pour une liste?
Personne ne peut m'aider ??? – tartafe