2016-08-24 2 views
1

J'ai un système pour envoyer des courriels aux utilisateurs à une heure précise. construit en ASP.NET MVC4 et a un résultat d'action "fonction" pour vérifier l'heure des messages et l'envoyer si le jour du message est aujourd'hui. Comment puis-je appeler ce résultat d'action (quotidien) - comme un ordonnanceur - de manière efficace?Comment appeler "Action Résultat" ASP.NET MVC à un moment précis (quotidien)

Merci.

+0

Je voudrais certainement créer une application séparée pour envoyer les emails et mettre en place une tâche planifiée sur le serveur pour l'exécuter quotidiennement. Configurer des minuteurs dans une application Web comme celle-ci est risqué. Si l'application n'est pas accessible pendant un certain temps, IIS peut la décharger ainsi que votre tâche quotidienne. – itsme86

+0

Si vous n'êtes pas si strict pour utiliser l'action MVC, passez à hangfire.io. C'est génial. http://hangfire.io – Developer

Répondre

2

Alors qu'un service/application distinct serait mieux, vous pouvez utiliser wget.

GNU Wget est un logiciel gratuit pour la récupération des fichiers via HTTP, HTTPS et FTP , les plus largement utilisés des protocoles Internet. Il est un outil de ligne de commande non interactif, il peut facilement être appelé à partir scripts, tâches cron, terminaux sans support X Windows, etc.

Vous faire quelque chose comme:

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

dans un fichier .bat et définissez-le pour exécuter via une tâche planifiée Windows au moment où vous le souhaitez (en supposant que vous n'avez pas besoin de l'exécuter moins de 60 secondes - si vous le faites, faites-le moi car j'ai une autre solution cela en utilisant un service Windows pour appeler le fichier bat à la place).

la partie -O NUL Omettre serait également enregistrer la sortie pour que vous puissiez voir si tout se déroulait avec succès en faisant:

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

de votre action du contrôleur.

+0

et si l'heure est sur le jour, l'heure et la minute, je veux dire que je veux envoyer l'e-mail à un moment précis, EX: 26/8/2016 03:44 pm? –

+0

Vous pouvez définir la tâche planifiée pour le faire. Réglez-le pour démarrer à ce moment-là et exécutez simplement toutes les 24 heures. Une autre chose que vous pourriez faire est d'ajouter une vérification dans l'action pour s'assurer que l'heure est correcte et si non, dormez une seconde. – webnoob

0

Plus efficace sera lorsque vous créez une nouvelle application en tant que service Windows. Vous pouvez facilement définir le code pour démarrer à un moment précis. dans cette solution vous aurez plus de flexibilité et d'indépendance. Vous pouvez commencer à embaucher: Windows Service to run a function at specified time

0

Vous pouvez créer une petite application console qui appelle simplement l'API envoie les emails. Vous pouvez ensuite planifier l'exécution de l'application de console à une heure spécifique à l'aide du planificateur Windows; vous pouvez même l'exécuter sans afficher la fenêtre de la console. Voir here ou here pour plus de détails sur la façon de planifier une tâche.