我正在Durandal編寫應用程序。 (C#是服務器端,Javascript + HTML是客戶端)。爲什麼在一段時間後刪除對象
在服務器端,我創建了一個CacheManager
類。
我強迫這個類有一個單一實例(單例)。在課堂上我有一個叫cache
的成員。這是包含我的應用程序數據的字典。當用戶打開和關閉應用程序時,數據在運行時累積。
這裏是我的代碼:
public class CacheManager
{
#region Singleton
// static holder for instance, need to use lambda to construct since constructor private
private static readonly Lazy<CacheManager> _instance = new Lazy<CacheManager>(() => new CacheManager());
// private to prevent direct instantiation.
private CacheManager()
{
Cache = new Dictionary<string, object>();
}
// accessor for instance
public static CacheManager Instance
{
get
{
return _instance.Value;
}
}
public Dictionary<string, object> Cache { get; set; }
#endregion
//...continue application code
}
但是,如果它是一個漫長的時間,因爲發送到服務器,接下來的時間上的最後一個請求時請求到達時,它發現了字典對象空!
看起來像c#中的對象具有有限的生命週期,並且當這段時間結束時,單例被重新初始化,並且字典接受一個新的空實例。
很長一段時間?如果它開始一天,IIS可能會回收你的應用程序池 –
我不在IIS上運行,我正在開發中 – user2783091
你在哪裏測試你的應用程序? IIS Express是VS2012及更高版本的默認Web瀏覽器(當您按F5/ctrl + F5時)。 –