在我的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. outputcache隨機刪除項目?
- 2. Tkinter列表框與條目
- 3. 篩選器列表條目
- 4. 列表條目,分頁
- 5. UPDATING表列與新條目
- 6. 創建條目列表
- 7. 重塑表 - 條目列鑑於新列
- 8. 當列表中有一個條目時,計算列表中的條目數
- 9. AsyncController OutputCache
- 10. 的OutputCache
- 11. 通過條目獲取列表中的唯一條目
- 12. 如何找出OutputCache項目的名稱?
- 13. 在MVC3項目中使用OutputCache的C#
- 14. 如何訪問列表的列表中的條目,並在該列表中打印的其他條目
- 15. 替換列表中的條目(sentence.replace())
- 16. 選擇列表中最早的條目
- 17. 使用條件項目生成列表
- 18. 在列表視圖中編輯條目
- 19. 列表CXF WSDL2JAVA空條目消失
- 20. 列表條目符合類和接口?
- 21. 在SharePoint列表上篩選YTD條目
- 22. Django Admin - 配置更改列表條目
- 23. 交換兩個鏈接列表條目
- 24. 漂亮的HABTM列表條目
- 25. 確定子彈列表條目
- 26. 有條件的分組列表項目
- 27. 對象列表。整數條目操作
- 28. 如何從每個列表條目
- 29. 匹配列表中的特定條目
- 30. 排序列表視圖內的條目
noone can help me ??? – tartafe 2010-07-07 10:02:32