2 つのメソッドを持つ単純な WCF Web サービスがあります。1 つはオブジェクトをキャッシュに保存/更新し、もう 1 つはそれを削除します。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");
});
}
}
}