在我的asp.net mvc应用程序中,我在不同的操作方法上使用了OutputCache属性。 是否可以查看与OutputCache属性相关的缓存上的当前条目? 如果我cicle在System.Web.HttpContext.Current.Cache
我没有找到这种类型的条目。 在此先感谢F.列表OutputCache条目
8
A
回答
10
输出缓存不公开,因此您不会在System.Web.HttpContext.Current.Cache
中找到它。在ASP.NET 2中,它包含在CacheInternal
的_caches
成员中,您可以通过名称猜测它是内部抽象类的私有成员。 虽然这不是一件容易的事,但可以用反射来检索它。
此外,如果您检索它,您会看到它包含各种内部缓存条目,如配置文件路径缓存,动态生成的类缓存,移动功能,原始响应缓存(这是输出缓存项的类型)。
假设您可以过滤与输出缓存相关的项目。问题是,除了密钥和原始响应(如字节数组)之外,它们不包含许多人类可读的信息。如果使用GET(a1)或POST(a2)方法,密钥通常由信息组成,站点名称,相关参数的根相对URL和哈希。
我想这是一个常见的痛点,所以在ASP.NET 4中引入了自定义输出缓存提供程序的新概念。您可以实现自己的从OutputCacheProvider继承的输出缓存提供程序,并提供一个返回所有条目的方法。你可以看看这篇文章 - http://weblogs.asp.net/gunnarpeipman/archive/2009/11/19/asp-net-4-0-writing-custom-output-cache-providers.aspx。我个人没有看过新的OutputCache基础设施,所以如果你发现任何有趣的东西,写一下它会很有趣。
这是检索内部缓存条目的代码。您可以在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);
}
}
}
相关问题
- 1. 筛选器列表条目
- 2. 列表条目,分页
- 3. 创建条目列表
- 4. 重塑表 - 条目列鉴于新列
- 5. 当列表中有一个条目时,计算列表中的条目数
- 6. AsyncController OutputCache
- 7. 在MVC3项目中使用OutputCache的C#
- 8. 选择第一个条目列表框
- 9. 使用列表条目作为字典
- 10. 写tkinter条目输入列表
- 11. 不能将列添加到条目表
- 12. LaTeX表中的自动“条目”列
- 13. 第N个列表条目ID
- 14. 排序列表视图内的条目
- 15. 复制Java列表的条目
- 16. 使用tkinter的条目选择列表
- 17. 检查列表条目不是0.0
- 18. 来自Xcode的Applescript条目列表
- 19. 列表中的重复条目
- 20. 每个用户的新列表条目
- 21. 确定子弹列表条目
- 22. MVVM WPF列表框条目不更新
- 23. 选择列表中最早的条目
- 24. 对象列表。整数条目操作
- 25. SML:从列表中删除条目
- 26. 比较列表中的2个条目
- 27. 漂亮的HABTM列表条目
- 28. OutputCache序列化并发请求
- 29. 删除空条目的子列表,从列表
- 30. Outputcache和HttpModule
noone can help me ??? – tartafe 2010-07-07 10:02:32