這是一個有趣的問題。我正在開發一個網絡聊天軟件,在過去的幾個小時裏,我一直在試圖弄清楚爲什麼會發生這種情況。基本上,我開始聊天時添加一個實際的聊天對象(進行通信的部分)到緩存集合。爲了檢測到你關閉了窗口,我將滑動過期設置爲10-30秒。我還設置回調讓聊天客戶端知道他需要斷開連接才能結束聊天會話。出於某種奇怪的原因,當我使用代碼來處理聊天客戶端時,無論它是什麼,它都會導致整個w3svc進程崩潰(檢查事件日誌)。我還嘗試在項目被刪除時發送給我自己的電子郵件,這有效。我甚至試圖把整個代碼放在try-catch塊中,但它似乎也忽略了這一點。有任何想法嗎? O_oCacheItemRemovedCallback導致web服務器崩潰
UPD:不,我不試圖刷新對象(in reference to this)。
添加:
HttpContext.Current.Cache.Insert("ChatClient_" + targetCid + HttpContext.Current.Session.SessionID, cl, null, Cache.NoAbsoluteExpiration,
TimeSpan.FromSeconds(15), CacheItemPriority.Normal, new CacheItemRemovedCallback(removeMyself));
刪除:
public static void removeMyself(string key, Object value, CacheItemRemovedReason reason) {
var wc = (WebClient)value;
try {
wc.Remove();
}
catch { }
}
我實際上是使用上HttpContext.Current.cache鎖增加了高速緩存對象時。