誕生日通知メールを送信する真夜中に実行されるプロセスがあります。これは 1 日に 1 回だけ実行する必要があります。Global.asax ファイルのコードは次のとおりです。
private const string DummyPageUrl = "http://localhost:4865/automatic/dummy.aspx";
private const string DummyCacheItemKey = "dummmmyyy";
void Application_Start(object sender, EventArgs e)
{
RegisterCacheEntry();
}
private void RegisterCacheEntry()
{
if (null != HttpContext.Current.Cache[DummyCacheItemKey]) return;
HttpContext.Current.Cache.Add(DummyCacheItemKey, "Test", null, Cache.NoAbsoluteExpiration,
TimeSpan.FromHours(1), CacheItemPriority.NotRemovable,
new CacheItemRemovedCallback(CacheItemRemovedCallback));
}
public void CacheItemRemovedCallback(string key, object value, CacheItemRemovedReason reason)
{
DoWork();
HitPage();
}
private void HitPage()
{
System.Net.WebClient client = new System.Net.WebClient();
client.DownloadData(DummyPageUrl);
}
private void DoWork()
{
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Url.ToString() == DummyPageUrl)
{
RegisterCacheEntry();
}
}