0
我有一個簡單的WCF webservice有兩個方法:一個保存/更新緩存中的obect,另一個刪除它。如何關閉Web服務服務器時保存對象。當WCF webservice結束時保存緩存對象
使用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");
});
}
}
}