2013-12-07 2 views
0

Код ниже в 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 не поддерживает триггер электронной почты. Я создал веб-приложение выше, чтобы отправить smtp-письмо и опубликовать его в Azure как облачный сервис. Каждую пятницу письмо должно быть отправлено с записями на этой неделе из таблицы «Кандидаты». Все, что планировалось бы по электронной почте, поможет, но я думаю, что не могу пойти на SendGrid.

+0

Можете ли вы поместить некоторые записи в метод 'NewCandidates()', чтобы узнать, вызывается ли он при размещении в Azure? Это также может быть связано с разрешениями на вашем почтовом сервере, а также может быть отключено от других доменов или некоторых настроек брандмауэра. –

+0

Какой самый простой способ разместить некоторые записи? – Jude

+0

Является ли ваше приложение запущенным на виртуальной машине (IaaS) или облачном сервисе (PaaS)? Идеальное решение - использовать Windows Azure Diagnostics. Быстрое и грязное решение заключалось бы в том, чтобы отправить сообщение в очередь или в блоб. –

ответ

0

Вы должны рассмотреть возможность перемещения кода, чтобы использовать Azure Scheduler (http://www.windowsazure.com/en-us/services/scheduler/). Это будет более надежная служба планирования, чем использование вышеуказанного подхода.

Надежная доставка почты будет осуществляться только через использование SendGrid - все остальное может быть отброшено одним черным списком. Вы можете отправлять до 25 000 писем в месяц с помощью SendGrid бесплатно (http://sendgrid.com/windowsazure.html).

Если вы не можете использовать SendGrid, вы можете использовать ретранслятор SMTP за пределами Azure (скажем, в своей собственной сети), что вы можете отказываться от почты, хотя даже это может не работать, если вы не измените сообщения, чтобы удалить источник IP/имя хоста.

+0

Я пошел на SendGrid. Это не сложно, как я думал. Здесь очень ясно: https://github.com/sendgrid/sendgrid-csharp – Jude

Смежные вопросы