Как вызвать "Результат действия" ASP.NET MVC в определенное время (ежедневно)

У меня есть система отправки электронных писем пользователям к определенному времени. встроенный в ASP.NET MVC4 и имеет "функцию" результата действия для проверки времени сообщений и отправки его, если день сообщения сегодня.

Как я могу назвать этот результат действия (ежедневно), как планировщик, эффективным способом?

Благодарю.

3 ответа

Решение

Хотя отдельный сервис / приложение было бы лучше, вы можете использовать wget.

GNU Wget - это бесплатный программный пакет для извлечения файлов с использованием HTTP, HTTPS и FTP, наиболее широко используемых интернет-протоколов. Это неинтерактивный инструмент командной строки, поэтому его легко вызывать из сценариев, заданий cron, терминалов без поддержки X-Windows и т. Д.

Затем вы бы сделали что-то вроде:

"C:\Program Files (x86)\GnuWin32\bin\wget.exe" --no-check-certificate https://www.exammple.com/YouController/YourAction -O NUL

в .bat файл и установите его для запуска через запланированное задание Windows в нужное время (при условии, что вам не нужно запускать его каждые 60 секунд - если вы это сделаете, дайте мне знать, поскольку у меня есть другой способ обойти это с помощью службы Windows вместо этого вызвать файл bat).

Опуская -O NUL part также сохранит вывод, чтобы вы могли увидеть, все ли прошло успешно, выполнив:

public ActionResult YourAction()
{
    //Do your code, get some stats that show it ran properly.
    return Content("Return your stats here.");
}

от вашего действия контроллера.

Вы можете создать небольшое консольное приложение, которое просто вызывает API и отправляет электронные письма. Затем вы можете запланировать запуск приложения консоли в определенное время с помощью планировщика Windows; Вы даже можете запустить его без отображения окна консоли. Смотрите здесь или здесь для деталей о том, как запланировать задачу.

Более эффективным будет создание нового приложения в качестве службы Windows. Там вы можете легко установить код для запуска в определенное время. в этом решении у вас будет больше гибкости и независимости. Вы можете начать пользоваться: Windows Service для запуска функции в указанное время

Используйте функции Azure, это именно то, для чего он был создан. Это действительно хорошо.

https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview

Другие вопросы по тегам