Global.asax に次のコードがあります。通常、電子メール アラームを生成します。私の問題は、24 時間ごとに 1 つの電子メールを送信するように設定しているのに、コードが 10 分ごとに電子メールを送信することです。私は設定しました:
HttpContext.Current.Cache.Add(CacheItemKey, "Test", null,
DateTime.MaxValue, TimeSpan.FromHours(24)
ただし、アプリケーションは 10 分ごとにメールを送信します。私も分で試しました。
私のコード:
private const string CacheItemKey = "CacheFromMe";
public void CacheIRemovedCallback(string key,
object value, CacheItemRemoved reason)
{
HitmyPage();
// Do the service works
DosomeWork();
}
private const string myPageUrl = "myurl.aspx";
private void HitmyPage()
{
WebClient myclient = new WebClient();
myclient.DownloadData(myPageUrl);
}
protected void Application_BegintheRequests(Object sender, EventArgs e)
{
// If the dummy page is hit, then it means we want to add another item
// in cache
if (HttpContext.Current.Request.Url.ToString() == myPageUrl)
{
// Add the item in cache and when succesful, do the work.
RegistermyCacheEntries();
}
}
private void DosomeWork()
{
DoEmailStuff();
AnotherEmailStuff();
}
private void DoEmailStuff()
{
// Statment For Sending The Email under conditions
}
private void AnotherEmailStuff()
{
// Another Statment for Sending Email
}
void Application_Start(object sender, EventArgs e)
{
RegistermyCacheEntries();
}
private bool RegistermyCacheEntries()
{
if (null != HttpContext.Current.Cache[CacheItemKey]) return false;
HttpContext.Current.Cache.Add(CacheItemKey, "Test", null,
DateTime.MaxValue, TimeSpan.FromHours(24),
CacheItemPriority.Normal,
new CacheIRemovedCallback(CacheIRemovedCallback));
return true;
}