La planification de l'Api Web méthode à exécuter sur les intervalles de l'ensemble
Dans mon projet actuel, il est nécessaire de planifier une méthode à exécuter à intervalles réguliers, par exemple une fois par semaine, et cela est actuellement fait par l'intermédiaire d'un service windows de la création d'un HttpClient et de frapper le contrôleur désiré méthode.
Je me demandais si c'est possible de l'automatiser dans le projet d'Api Web lui-même, plutôt que d'utiliser un service externe. Jusqu'à présent, je n'ai pas trouvé de documentation sur la façon de procéder.
Excuses pour ne pas avoir un exemple de code à travailler à partir de la que je n'ai pas trouvé une base pour commencer à partir de l'instant.
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin de planifier une tâche d'arrière-plan à chaque semaine, vous pouvez utiliser FluentScheduler (NuGet lien) pour le faire fonctionner pour vous. Vous pouvez faire quelque chose comme ceci:
Mise à jour La nouvelle version de FluentScheduler changé l'API légèrement. La tâche doit maintenant être dérivé IJob, pas ITask. Mise à jour de mon exemple pour tenir compte de cela.
Execute()
pour voir si il est frappé? Modifier la tâche à exécuter toutes les 5 secondes pour voir si ça fonctionne.Il n'est pas vraiment un chemin à l'intérieur de l'Api Web pour obtenir ce que vous désirez. Les Api Web doit être apatride, de toute façon.
Vous pourrait théoriquement créer une tâche en cours d'exécution sur votre serveur web régulièrement appel à votre Api (ou la méthode), le meilleur endroit pour mettre une telle méthode serait de la méthode OnStart dans votre global asax fichier. Cependant, cette méthode est exécutée lorsque le serveur web est chargé dans l'application-domaine, et la tâche sera tué, lorsque le serveur web décide de décharger votre application. Donc, si vous n'appelez pas votre serveur web au moins une fois, votre tâche ne sera pas commencé. Et si votre serveur web n'est pas accès régulièrement, votre tâche sera tué.
Avoir un externe de ressources fiables, telles que votre service, est toujours la meilleure et la plus sûre approche.
Ce n'est pas quelque chose que vous voulez l'API Web pour le faire, et je ne le pense pas. Quelque chose à propos de unique responsabilités.
Quel est le problème avec l'approche de service? Vous pouvez également prendre un coup d'oeil au Planificateur de Tâches de Windows.
Je ne dis pas que c'est la meilleure approche, mais il a travaillé pour moi et c'était assez facile.
Notre WebApi était déjà en place et j'ai besoin d'une solution rapide pour appeler l'API une fois par heure. J'ai utilisé node.js et a écrit quelques lignes de code qui ont utilisé le moment.js de la bibliothèque. Il y a une minuterie/compte à rebours fonction. Je l'ai mise à feu de chaque heure et de faire l'appel à notre API. Avait travailler sur IIS. C'est à mon précédent employeur, sinon je ne posterais le code réel.
C'est facile et cela a fonctionné. Espérons que cela aide quelqu'un. node.js + moment.js bibliothèque.