Global.asax中的代碼可以很好地與IIS配合使用,但是當我將應用程序部署到Azure時,它不起作用。Global.asax計時器適用於IIS,但不適用於Azure
protected void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 60000;
timer.AutoReset = true;
timer.Elapsed += new ElapsedEventHandler(NewCandidates);
timer.Enabled = true;
}
public void NewCandidates(object source, System.Timers.ElapsedEventArgs e)
{
SendEmail.MailSender mail = new MailSender();
mail.EmailSender();
}
都是因爲Azure不支持電子郵件觸發器。我創建了上面的Web應用程序來發送smtp電子郵件並將其作爲雲服務發佈到Azure。每個星期五都會有一封電子郵件發送給本週候選人表中的記錄。任何安排電子郵件都會有幫助,但我認爲我不能去發送SendGrid。
你可以在'NewCandidates()'方法中進行一些日誌記錄以查看它是否在Azure中託管時被調用?這很可能與郵件服務器端的權限有關 - 從其他域中繼可能被禁用或某些防火牆設置。 –
什麼是最簡單的方法來進行一些日誌記錄? – Jude
您的應用程序是在虛擬機(IaaS)還是雲服務(PaaS)中運行?理想的解決方案是使用Windows Azure診斷程序。一個快速和骯髒的解決方案是將消息放入隊列或blob中。 –