2013-09-27 225 views
17

Tôi có một lớp trông như thế này:Làm thế nào để sử dụng System.Web.Caching trong asp.net?

using System.Collections.Generic; 
using System.Web.Caching; 

public static class MyCache 
{ 
    private static string cacheKey = "mykey"; 

    public static Dictionary<string, bool> GetCacheValue(bool bypassCache) 
    { 
     var settings = Cache[cacheKey] as Dictionary<string, bool>; // error on this line 

     // ...etc... 

     return settings 
    } 
} 

vấn đề tôi đang gặp là điều này sẽ không biên dịch. Trình biên dịch nói Cache không thể được sử dụng theo cách tôi đang làm. Đây là thông báo:

'System.Web.Caching.Cache' is a 'type' but is used like a 'variable' 

Điều này làm tôi bối rối. Tôi đã googled ASP.NET Cache API và đã tìm thấy nhiều ví dụ về Cache đang được sử dụng theo cách này. Dưới đây là một trong các ví dụ sau:

// http://www.4guysfromrolla.com/articles/100902-1.aspx 
value = Cache("key") 

     - or - 

value = Cache.Get("key") 

Khi tôi thử sử dụng Cache.Get() Tôi nhận được một lỗi khác nói rằng đó không phải là phương pháp tĩnh.

Rõ ràng tôi cần phải khởi tạo phiên bản Cache. Đây có phải là cách chính xác để sử dụng API này không? Câu hỏi tiếp theo là, thông tin được lưu trong bộ nhớ cache có tồn tại trên các phiên bản không?

Cảm ơn sự giúp đỡ của bạn.

+6

Sử dụng 'HttpRuntime.Cache' để có được cho 'cache' dụ. – MarcinJuraszek

Trả lời

23

System.Web.Caching.Cache là một lớp - bạn thấy những người đang sử dụng thuộc tính có tên Cache là một ví dụ của System.Web.Caching.Cache. Nếu bạn đang sử dụng nó bên ngoài một lớp học mà cung cấp cho bạn với Cache tài sản, truy cập nó bằng cách sử System.Web.HttpRuntime.Cache:

var settings = System.Web.HttpRuntime.Cache[cacheKey] as Dictionary<string, bool>; 
+2

Tuyệt vời. Tôi thích nó khi có một lời giải thích đơn giản! – quakkels