2010-07-14 5 views
6

Je suis dans l'hébergement partagé et ils ne me permettent pas d'utiliser Windows Scheduler ... Alors, quelles sont les façons d'accomplir des tâches planifiées (par exemple, timed mail) dans asp.net ... Je viens de voir background process par Jeff Atwood blog ... Est-ce relaible? Ou toute autre façons de faire les tâches planifiées ...Façons de planifier des tâches (sans écrire le planificateur de fenêtres) dans asp.net

Puis j'ai trouvé quartz.net mais je ne peux pas trouver un exemple simple qui intègre quartz.net dans un asp.net (sans installer un serveur Quartz.Net comme autonome service windows) ... Toute suggestion sur quartz.net ...

+3

http://stackoverflow.com/questions/3243400/how-to-do-background-processing-similar- to-that-on-stackoverflow ... vous avez posé la même question ici ... – RameshVel

+0

Comment est-ce que ce n'est pas une copie de votre autre question? –

+0

Quelle solution vous êtes finalement arrivé pour cela?J'ai une même exigence, mais le problème est que Quartz.net cesse de fonctionner quand App pool redémarre :( –

Répondre

1

J'étudiais Microsoft.Web.Administration assembly Schedule Class pour atteindre la même chose mais il semble que la classe peut être utilisée uniquement pour planifier le redémarrage du processus de travail IIS, voici le example of creating app pools and setting periodical restart.

Donc, seul le moyen de planifier était de redémarrer l'application ASP.NET, puis de lancer le travail planifié dans Application_Start. Mais ce n'est pas une solution hack pas la solution, donc à la fin j'ai fini par ajouter des capacités de planification à notre service de windows de sauvegarde qui fonctionnait déjà sur le serveur web, donc OMI Quartz.net est la meilleure solution pour vous. Peut-être que vous pourriez convaincre votre fournisseur de site Web pour installer Quartz.net toutes les autres solutions semble être un hack qui vous donnera plus ou moins de problèmes.

0
+0

-1 Comment ça va être hébergé dans un processus ASP.NET? –

+0

cela peut vous aider: http: // www. codeproject.com/KB/dotnet/ABTransClockArticle.aspx?msg=1990168#xx1990168xx ou de vérifier le lien de mise à jour 2 –

+0

ne va pas aider Pandya.Un hébergeur qui ne vous laissera pas exécuter Windows Scheduler ne va guère approuver les services Windows distincts. –

3

Vous coul d écrivez simplement une page ASP.Net qui remplit votre tâche, par ex. envoyer les mails. Ensuite, utilisez un service de planification en ligne comme SetCronJob pour appeler l'URL de la page sur votre serveur selon un calendrier. L'inconvénient de cette approche très simple est que vous dépendez d'un service externe.

+0

puis-je faire confiance Parce que mon application est basée sur le concept de courrier planifié ... –

+0

Parfait! Exactement ce dont j'ai besoin, le pire des cas, je vais créer quelque chose de très simple en cours d'exécution à partir de ma machine comme une sauvegarde. – mhenrixon

0

Vous pouvez prendre l'idée de this et de mettre votre tâche dans la méthode KeepAlive. Espérer! Ça aide.

0

J'ai eu ce même problème il n'y a pas longtemps, et à court d'utiliser un service tiers, il n'y a pas de bons moyens.

Cela dit, j'ai utilisé l'objet .NET Application Cache avec un délai d'expiration de 24 heures.

Cache["DailyTask"] = true; 

Puis dans ma classe de page de base, chaque fois a été fait une demande de page, j'ai vérifié pour l'existant de cette variable, et si elle existe, je courais la tâche. L'inconvénient de cela est que vous dépendez de la présence de demandes de pages dans votre application. Enfin, une autre façon d'y parvenir est de définir un rappel sur l'expiration du cache (méthode CacheItemRemovedCallback), puis d'enchaîner cette méthode pour insérer un nouvel élément dans le cache qui a également un rappel et ainsi le cycle se répète .

Questions connexes