Question

Problème

Je suis en train d'essayer de configurer une tâche planifiée Sitecore dans la base de données par la planification et les commandes.

Jusqu'à présent, je l'ai suivi http://sdn.sitecore.net/ FAQ / administration / Scheduled% 20tasks.aspx pour la plupart de ce que j'ai besoin. Leur méthode utilise: public void WriteToLogFile(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem). Je suppose que les éléments est passé dans l'élément de calendrier, l'élément de commande lui-même, et l'élément de programme lui-même.

J'ai une fonction d'exécution qui suit la même syntaxe: protected void run(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduleditem). J'ai recieveing ??une exception car il fonctionne dans mes journaux bien. Liées est la pile d'exception: http://pastie.org/1847345 , mais voici l'exception imbriquée:

Exception: System.NullReferenceException 
Message: Object reference not set to an instance of an object. 
Source: fhservices at fhservices.twitterPull.run(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduleditem)

J'ai essayé quelques combinaisons de paramètres à accepter sans chance.

Planification web.config Section:

 <scheduling>
  <!-- Time between checking for scheduled tasks waiting to execute -->
  <frequency>00:01:00</frequency>
  <!-- Agent to process schedules embedded as items in a database -->
  <agent type="Sitecore.Tasks.DatabaseAgent" method="Run" interval="00:02:00">
    <param desc="database">core</param>
    <param desc="schedule root">/sitecore/system/tasks/schedules</param>
    <LogActivity>true</LogActivity>
  </agent>
 ...

que quelqu'un connaît les paramètres qui Sitecore envoie des méthodes qui sont invoquées par cette méthode d'emplois à partir?

Était-ce utile?

La solution

D'après l'extrait de code que vous avez lié à sur le NRS, je pense que vous créez votre propre méthode, similaire à WriteToLogFile mais pas Run(). Étape 4 dit:

Remplissez les champs nécessaires:

Type : CustomScheduleTasks.Task1, CustomScheduleTasks

Méthode : WriteToLogFile

Le type indique l'espace de noms et le fichier assemblage. La méthode indique la méthode de faire appel à la classe spécifiée.

Votre commande est maintenant prêt à être utilisé comme une tâche planifiée.

Ainsi, au lieu de votre méthode de Run(), nommez quelque chose d'autre et le mettre dans le champ Method de la commande dans Sitecore. Run() est la méthode dans le DatabaseAgent de Sitecore qui fonctionne.

Autres conseils

Il semble que votre tâche est en fait en cours d'exécution. L'exception ne mentionne rien de ne pas être en mesure de trouver votre méthode et l'exception vient de votre méthode de tâches. Essayez de régler un point d'arrêt dans la méthode et de vérifier quel objet est nul.

Juste pour référence, les paramètres transmis à une tâche planifiée sont les éléments spécifiés dans le champ des éléments de la commande, l'élément de définition de la commande et l'élément de définition de calendrier.

Eh bien ... votre définition de la méthode dit "run", peu r. Mais dans web.config que vous avez Run, grand R. Sitecore utilise la réflexion .Net ici pour trouver la méthode, il sera sensible à la casse.

J'ai mes tâches planifiées dans le système mis en place / tâches plutôt que web.config. Fonctionne comme un charme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top