2010-06-02 2 views

ответ

1

Какие рамки вы работаете с? У меня есть некоторые указатели, если вы работаете с .Net 4.0, как и я.

Если у вас есть доступ к вашей машине, где вы можете установить службы, я бы использовал новую и улучшенную службу Workflow для этой ситуации. Что приятно в них, так это то, что Workflows может сохраняться в течение минут, часов, дней, недель, месяцев и т. Д., Лежащих «бездействующими», до тех пор, пока не завершатся периоды времени задержки.

Если это машина IIS (и если это маршрут, который вы хотели бы принять), то относительно просто построить его прямо как проект/решение «Workflow Service» в VS 2010. Оттуда вы будете представлены дизайнером и несколько действий рабочего процесса на панели инструментов.

Добавить операцию блок-схемы, чтобы поместить ваши действия электронной почты внутри. Блок-схема идеальна, потому что она может инициализировать все, что вам нужно, и поток решений может перенаправлять назад в направлении (в отличие от активности всегда движущейся последовательности). То, что вам нужно сделать с вашей логикой, зависит от вас, потому что ваш вопрос не содержит много деталей.

Теперь, если вы используете .Net 3.5, я бы подумал о том, чтобы воздерживаться от создания Workflow, поскольку вам нужно выполнить миграцию при переключении на 4.0 (WF 3.5 НЕ совместим с 4.0). При доступе администратора к компьютеру вы можете установить службу Windows, которая содержит таймер, чтобы загореться кодом каждые 30 дней (или, тем не менее, определено) по мере необходимости.

+0

Думаю, я собираюсь идти в этом направлении. Спасибо ... – Soeren

+0

@Soeren, ключ здесь в том, что вы не можете надежно запускать событие из рабочего процесса asp.net/IIS. Вам нужен сервис Windows. – StingyJack

1

Если вы хотите сделать это с помощью ASP.NET приложения вместо отдельного приложения, у вас есть несколько вариантов:

Так как вы хотите его запустить через каждые 30 дней, а не ежедневно, я рекомендую этот метод использования таблица расписания вместо переменных приложения или кеша для планирования заданий:

Вы можете настроить таблицу расписания в своем db и проверить, когда она была обновлена ​​в вашем global.asax. В начале сеанса проверьте, превышает ли текущая дата более 30 дней. Если это так, то вызовите метод отправки электронной почты.

Если вы отправляете электронные письма, обновите таблицу расписания с текущей датой.

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