0

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;
        } 
4

1 に答える 1