我有一个简单的 WCF Web 服务,有两种方法:一种保存/更新缓存中的对象,另一种删除它。关闭 Web 服务服务器时如何保存对象。
使用CacheItemRemovedCallback
不起作用,因为每次我更新它时都会删除该对象。使用Global.asax.cs.Application_End()
也不起作用,因为缓存在到达这里时已被清除。使用Dispose()
方法方法不起作用,因为每次调用完成时都会调用它。
[ServiceContract]
public class WebService
{
[OperationContract]
public void Test(string message)
{
List<string> Logs;
Logs = HttpRuntime.Cache.Get("LogMessages") as List<string>;
if (Logs == null)
{
Logs = new List<string>();
Logs.Add(message);
}
else Logs.Add(message);
HttpRuntime.Cache.Insert("LogMessages", Logs, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null);
}
[OperationContract]
public void WriteToFile()
{
List<string> Logs;
Logs = HttpRuntime.Cache.Get("LogMessages") as List<string>;
if (Logs == null)
{
string filename = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
//any method of writing the object to disk
HttpRuntime.Cache.Remove("LogMessages");
});
}
}
}