Согласно спецификации XML схемы , временные стоимости даты должны быть в формате ISO8601, например, что-то как
2009-03-13T22:16:00
Вы можете добавить обычное действие в контроллер
Function SendEmails() As ActionResult
Dim result As String = ""
''//big timeout to handle the load
HttpContext.Server.ScriptTimeout = 60 * 10 ''//ten minutes
result = DoTheActualWork()
''//returns text/plain
Return Content(result)
End Function
А затем вызвать страницу из запланированной задачи. Может быть запланированной задачей на сервере или на любом компьютере. Используйте для этого .vbs:
SendEmails.vbs:
''//Force the script to finish on an error.
On Error Resume Next
''//Declare variables
Dim objRequest
Dim URL
Set objRequest = CreateObject("Microsoft.XMLHTTP")
''//Put together the URL link appending the Variables.
URL = "http://www.mysite.com/system/sendemails"
''//Open the HTTP request and pass the URL to the objRequest object
objRequest.open "POST", URL , false
''//Send the HTML Request
objRequest.Send
''//Set the object to nothing
Set objRequest = Nothing
Я хотел бы сначала сохранить все ваши электронные письма, уведомления и т. Д. В базе данных / таблице, а затем иметь службу, которая опрашивает новые записи в этой базе данных или таблице, которая обрабатывает фактическую отправку электронной почты / notification.
Для решения ваших конкретных ситуаций вы можете настроить контроллеры для записи в БД, когда требуется электронное письмо / уведомление, а служба, которая выполняет определенные интервалы / проверки событий, также записывает в БД для создания нового электронного письма. Таким образом, ваше приложение и служба не заботятся о том, как и что происходит с этими уведомлениями, они просто говорят: «Эй, сделайте что-нибудь». и служба электронной почты / уведомлений фактически выполняет реализацию.
Преимущество этого заключается в том, что если ваш почтовый провайдер не работает, вы не t терять электронные письма, и у вас есть история всех отправленных электронных писем с указанием того, когда, кто и т. д. Вы также можете скопировать или изменить адрес электронной почты, чтобы делать больше, например, отправлять в Twitter или текстовое сообщение по телефону и т. д. эффективно отделяет ваши уведомления от вашего приложения.
Все приложения, которые я недавно использовал, используют этот тип модели, и он предотвращает потерю электронных писем из-за сбоев службы и других причин. Это также позволило искать все электронные письма, прошедшие через систему, и получать метрики, которые позволяют мне оптимизировать необходимость отправки электронных писем, сохраняя дополнительную информацию в записи электронной почты, например, отправленную причину, сообщение об ошибке и т. Д. ..
Это можно сделать с помощью агента SQL Server, подробнее об этом читайте здесь:
Вы можете разместить рабочий процесс Windows или службу Windows. и настроить очередь сообщений для обработки этих событий. Вы можете просто использовать базу данных для своей очереди сообщений, или вы можете использовать очередь сообщений ms или использовать триггеры в базе данных. Но такие функции не должны входить в обязанности вашего интерфейсного веб-приложения. Если доходит до дела, вы можете создать другой поток в вашем приложении asp.net для обработки этой очереди.
Похоже на задание службы или запланированное задание.
Вы не хотите делать это в ASP.NET, потому что вам придется настраивать IIS, чтобы поддерживать работу вашего приложения все время, что может быть не самой лучшей идеей.
Запланированная задача - это хорошо, но вам придется запрограммировать ее со всей логикой для анализа ваших данных. Не лучший вариант для разделения забот. Также вам придется обновить две базы кода, если что-то изменится.
Служба не идеальна, поскольку она действительно будет делать что-то только один раз в день. Но вы можете настроить службу wcf и поставить веб-сайт в очередь, используя эту службу.