Web サービスがあり、その中でタイマーを使用しました。私のvs2010内でサービスアプリケーションを実行すると、魔法のように機能します。しかし、リモートサーバーにデプロイすると、ElapsedEventHandler が起動しません。ロガーを使用してイベントを記録し、ログ ファイルへの書き込み権限を設定しました。もっと説明しましょう。ジョブを待機するサービスを作成しようとしていますが、ジョブは大きなリストに電子メールを送信しています。電子メールは 20 秒間隔で送信する必要があります。ここに私のコードの一部があります:
public class EmailSender : IEmailSender
{
Queue<AdvEmail> ListOfEmails = new Queue<AdvEmail>();
List<EmailJob> EmailJobs = new List<EmailJob>();
Timer timerFetchJobs = null;
Timer timerSendEmails = null;
public EmailSender()
{
try
{
Logger.Log("init service");
timerFetchJobs = new Timer();
timerFetchJobs.Interval = 5 * 1000;
timerFetchJobs.Elapsed += new ElapsedEventHandler(timerFetchJobs_Elapsed);
timerFetchJobs.Enabled = true;
timerSendEmails = new Timer();
timerSendEmails.Interval = 20 * 1000;
timerSendEmails.Elapsed += new ElapsedEventHandler(timerSendEmails_Elapsed);
timerSendEmails.Enabled = true;
timerFetchJobs.Start();
timerSendEmails.Start();
Logger.Log("init service Ended Succefully");
Logger.Log("timerFetchJobs.Enabled=" + timerFetchJobs.Enabled.ToString());
Logger.Log("timerSendEmails.Enabled=" + timerSendEmails.Enabled.ToString());
}
catch (Exception ex)
{
Logger.Log("Error in InitService. Message: " + ex.Message);
}
}
void timerSendEmails_Elapsed(object sender, ElapsedEventArgs e)
{
timerSendEmails.Stop();
Logger.Log("Checking for Emails in the Queue");
// some statments here
timerSendEmails.Start();
}
void timerFetchJobs_Elapsed(object sender, ElapsedEventArgs e)
{
timerFetchJobs.Stop();
try
{
FetchJobsFromDB();
}
catch (Exception ex)
{
Logger.Log("Error in timerFetchJobs. Message: " + ex.Message);
}
timerFetchJobs.Start();
}
ブラウザからサービスアドレスにアクセスすると、初期化レベルが正しく初期化されてログに記録されますが、タイマーを起動する手がかりはありません!! 理由がわからない?? 私が間違っていることは何ですか?ありがとう
編集: ローカルで実行したときのログファイルは次のとおりです。
ログ エントリ : 1392/01/30 08:47:09 : :init サービス -------------------------------
ログ エントリ: 1392/01/30 08:47:09 : :init サービスが正常に終了しました-------------------------------
ログ エントリ: 1392/01/30 08:47:09::timerFetchJobs.Enabled=True ------------------------------ -
ログ エントリ: 1392/01/30 08:47:09::timerSendEmails.Enabled=True ------------------------------ -
ログ エントリ: 1392/01/30 08:47:14 : :データベース内のジョブを確認しています----------------------------- --
Log Entry : 1392/01/30 08:47:16 : :新しいジョブがあります。ジョブ名はパッド71 -----------------------------------
ログ エントリ : 1392/01/30 08:47:19 : :ジョブ パッド 71 の電子メールの追加------------------------- ---
そして、これがリモートサーバーにデプロイしたときのログファイルです
ログ エントリ : 1392/01/30 08:47:09 : :init サービス -------------------------------
ログ エントリ: 1392/01/30 08:47:09 : :init サービスが正常に終了しました-------------------------------
ログ エントリ: 1392/01/30 08:47:09::timerFetchJobs.Enabled=True ------------------------------ -
ログ エントリ: 1392/01/30 08:47:09::timerSendEmails.Enabled=True ------------------------------ -