ASP.NET Core, MVC tâche planifiée
J'ai besoin d'exécuter une tâche planifiée sur chaque nouveau jour dans asp.net mvc application de base.
Puis-je le faire, et comment?!
thnx
Vous devez vous connecter pour publier un commentaire.
J'ai besoin d'exécuter une tâche planifiée sur chaque nouveau jour dans asp.net mvc application de base.
Puis-je le faire, et comment?!
thnx
Vous devez vous connecter pour publier un commentaire.
Avec DotNet Core 2 est venu une nouvelle interface
IHostedService
qui la prendra en charge les tâches de fond.Ici, vous aurez quelques exemples comment gérer la planification des tâches.
La construction d'une tâche planifiée dans ASP.NET de Base/Standard 2.0
La mise en œuvre de tâches en arrière-plan dans .NET Core 2.x webapps ou microservices avec IHostedService et la BackgroundService classe
Réponse courte
Vous ne pouvez pas.
Longue réponse
Vous avez besoin de bibliothèques tierces, comme Quarz, Hangfire ou Azure WebJobs qui sera le déclencheur de l'extérieur ou à l'intérieur de la ASP.NET application de Base.
Sachez cependant que si vous utilisez de Quartz ou Hangfire pour l'exécuter à l'intérieur de l'ASP.NET application de Base, il peut être soumis à des processus de cycle de vie, c'est à dire si vous l'exécutez avec IIS ou Azure Service de l'App, puis vous n'avez aucun contrôle quand IIS arrêt de l'application (en raison de l'inactivité ou de quoi que ce soit) ou si elle va démarrer w/o à une demande externe (IIS peut être configuré pour redémarrer l'application immédiatement, par défaut, sur demande suivante).
Cela étant dit, il pourrait être possible que vous sauter sur la gâchette lorsque l'application est en cours de fermeture par IIS ou un autre processus. Donc de son mieux pour le planificateur de courir à l'extérieur de ASP.NET les processus de Base (c'est à dire l'application de la console, fond travailleur sur Azure ou d'utiliser Azure Web Emplois).
host.Run()
Comme une idée à l'aide de la Startup.cs avec le Système.Le filetage.Minuterie.
DbContext
. Et si vous faites tourner des fils à l'intérieur de vous peut complètement gâcher comment ASP.NET gère le pool de threadsJe vous conseille d'exécuter un script powershell qui fait une demande d'OBTENIR n'importe quel api/point de terminaison dans votre application. De cette façon, vous facilitera le planificateur de tâches de windows en un .NET Application de Base.
1. Créer un script powershell et l'enregistrer sur votre serveur, comme myjob.ps1
2. Définir la stratégie d'exécution powershell sans restriction
Ouvrir Powershell et exécutez les commandes suivantes:
Lire plus sur la configuration d'une tâche planifiée ici:https://www.metalogix.com/help/Content%20Matrix%20Console/SharePoint%20Edition/002_HowTo/004_SharePointActions/012_SchedulingPowerShell.htm
3. Créer une tâche planifiée et l'exécution de votre script
Créer une nouvelle tâche i Tâche Schedulerer. Lors de la création de action réglez-le sur "Démarrer un programme"
Si vous hébergez votre code sur Azure quelque chose comme cela est possible. Avec Azure WebJobs vous pouvez demander une url spécifique comme une tâche cron, mais vous pouvez également exécuter des éléments de code si vous le souhaitez. Cela peut être un asp.net core application si vous le souhaitez. Vous avez besoin de changer certaines choses dans le projet de démarrage VS crée pour vous si.
Pour exemple, nous allons écouter une file d'attente et envoyer un e-mail quand quelque chose est mis en file d'attente. Ou de créer une image miniature d'une grande image.
Mor infos peuvent être trouvées ici: https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get-started/
Généralement si vous ne souhaitez pas utiliser azure ou de tout autre service, vous pouvez créer un nouveau projet. Une sorte de moteur de règles. La tâche planifiée ne sera stockée sur un DB (par exemple, SQL Server) et puis l'application va lire cette tâche et d'exécuter la logique. Donc, généralement, il est préférable d'avoir une autre une autre application pour gérer les tâches planifiées (comme le nettoyage de fichiers, e-mails, etc). Ce type de solution permet de facilement mettre à l'échelle votre logique pour plusieurs type de tâche et d'appliquer les règles. Par exemple, l'envoi d'e-mail basé sur les différentes règles que vous avez décidé