这是一个有趣的问题。我正在开发一个网络聊天软件,在过去的几个小时里,我一直在试图弄清楚为什么会发生这种情况。基本上,我开始聊天时添加一个实际的聊天对象(进行通信的部分)到缓存集合。为了检测到你关闭了窗口,我将滑动过期设置为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锁增加了高速缓存对象时。