trong ứng dụng asp.net mvc của tôi Tôi đang sử dụng thuộc tính OutputCache trên phương thức hành động khác nhau. Có thể xem các mục nhập hiện tại trên bộ nhớ cache liên quan đến thuộc tính OutputCache không? Nếu tôi bị phạt trên System.Web.HttpContext.Current.Cache
tôi không tìm thấy loại mục nhập này. Cảm ơn trước F.danh sách OutputCache nhập
Trả lời
Bộ nhớ cache đầu ra không thể truy cập công khai, do đó bạn sẽ không tìm thấy nó trong System.Web.HttpContext.Current.Cache
. Trong ASP.NET 2 nó được chứa trong thành viên _caches
của CacheInternal
, mà bạn có thể đoán theo tên là một thành viên riêng của một lớp trừu tượng nội bộ. Có thể truy xuất nó với sự phản chiếu, mặc dù nó không phải là một nhiệm vụ dễ dàng. Ngoài ra nếu bạn truy xuất nó, bạn sẽ thấy rằng nó chứa tất cả các loại mục bộ nhớ cache nội bộ như bộ nhớ cache đường dẫn, bộ nhớ cache lớp được tạo động, khả năng di động, bộ nhớ cache phản hồi thô (đây là loại mục bộ nhớ cache đầu ra).
Giả sử bạn có thể lọc các mục có liên quan đến bộ nhớ cache đầu ra. Vấn đề là chúng không chứa nhiều thông tin có thể đọc được của con người ngoài phản hồi chính và nguyên (như mảng byte). Khóa thường bao gồm thông tin nếu phương thức GET (a1) hoặc POST (a2) tôi đã sử dụng, tên trang web, url tương đối gốc và hàm băm của các tham số phụ thuộc.
Tôi đoán đó là điểm đau phổ biến trong ASP.NET 4, một khái niệm mới về nhà cung cấp bộ đệm đầu ra tùy chỉnh đã được giới thiệu. Bạn có thể triển khai nhà cung cấp bộ nhớ cache đầu ra của riêng bạn kế thừa từ OutputCacheProvider và cung cấp một phương thức trả về tất cả các mục nhập. Bạn có thể xem bài viết này - http://weblogs.asp.net/gunnarpeipman/archive/2009/11/19/asp-net-4-0-writing-custom-output-cache-providers.aspx. Cá nhân tôi đã không nhìn vào cơ sở hạ tầng OutputCache mới, vì vậy nếu bạn tìm thấy bất cứ điều gì nó sẽ là thú vị để viết về nó.
Đây là mã để truy xuất các mục nhập bộ nhớ cache nội bộ. Bạn có thể duyệt các giá trị của chúng trong khi gỡ lỗi trong 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);
}
}
}
Tôi sẽ thử vào thứ hai và cho bạn biết kết quả. Cảm ơn bạn. – Mauro
Hi Branislav, có cách nào để lọc bộ nhớ cache để chỉ nhận các mục nhập của tôi không? Cảm ơn – Mauro
Có, bạn có thể tìm thấy các mục nhập bộ nhớ cache đầu ra được thu thập trong danh sách outputCacheEntries. Đáng buồn thay không có nhiều để xem. Tuy nhiên tôi hy vọng nó sẽ giúp trường hợp của bạn. –
- 1. Nhập danh sách xem danh sách từ danh sách đối tượng
- 2. Danh sách tìm kiếm Android khi nhập
- 3. danh sách con sáp nhập trong python
- 4. Danh sách tăng cường xâm nhập móc
- 5. sáp nhập hai danh sách trong Haskell
- 6. Nhập danh sách được phổ biến <BaseClass> vào Danh sách <ChildClass>
- 7. ASP.NET OutputCache và postbacks
- 8. asp.net outputcache và cookie
- 9. ASP.Net MVC4 Mobile-Aware OutputCache
- 10. Danh sách người dùng đã đăng nhập trong Wordpress?
- 11. Triển khai danh sách xâm nhập cho Java?
- 12. Jquery: Danh sách bộ lọc thả xuống khi bạn nhập
- 13. Sử dụng và danh sách in lại đăng nhập
- 14. yếu tố Gia nhập một danh sách trong GNU Make
- 15. PHP5: nhận danh sách không gian tên đã nhập
- 16. Phương pháp với danh sách đã nhập và thừa kế
- 17. Sao chép danh sách java có giới hạn mục nhập
- 18. Danh sách dữ liệu và nhập sự kiện quan trọng
- 19. Nhập danh sách mẫu tệp STP vào Visual Studio 2010
- 20. Giải thích danh sách nhập rỗng của Haskell()
- 21. Xóa tất cả các mục nhập trong danh sách Redis
- 22. Collections.shuffle (Danh sách danh sách)
- 23. Danh sách + = tuple vs Danh sách = Danh sách + tuple
- 24. danh sách> danh sách các danh sách
- 25. Bypass OutputCache trong ASP.NET MVC
- 26. Thêm mục nhập vào danh sách và xóa mục nhập đầu tiên trong Python
- 27. Scala - chuyển đổi Danh sách Danh sách thành một Danh sách duy nhất: Danh sách [Danh sách [A]] thành Danh sách [A]
- 28. chuyển đổi danh sách các danh sách
- 29. Automapper Danh sách copy vào danh sách
- 30. chắp thêm danh sách vào danh sách
không ai có thể giúp tôi ??? – tartafe