Frage

Problem

Ich versuche derzeit, eine geplante Sitecore -Aufgabe in der Datenbank mit Zeitplänen und -befehlen einzurichten.

Bisher habe ich gefolgt http://sdn.sitecore.net/faq/administration/Scheduled%20Tasks.aspx Für das meiste, was ich gebraucht habe. Ihre Methode verwendet:public void WriteToLogFile(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem). Ich gehe davon aus, dass dies die Elemente sind, die im Zeitplanelement, dem Befehlselement selbst und dem Zeitplanelement selbst übergeben wurden.

Ich habe eine Run -Funktion, die der gleichen Syntax folgt: protected void run(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduleditem). Ich habe jedoch eine Ausnahme, während sie in meinen Protokollen ausgeführt wird. Verknüpft ist der Ausnahmestapel: http://pastie.org/1847345, Aber hier ist die verschachtelte Ausnahme:

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)

Ich habe ein paar verschiedene Parameterkombinationen ausprobiert, um es ohne Glück zu akzeptieren.

Planung von Web.Config: Abschnitt:

 <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>
 ...

Würde jemand die Parameter kennen, die Sitecore mit Methoden sendet, die durch diese Methode zum Starten von Jobs aufgerufen werden?

War es hilfreich?

Lösung

Nach dem Snippet, mit dem Sie auf der SDN verlinkt sind, erstellen Sie Ihre eigene Methode, ähnlich wie WriteToLogFile aber nicht Run(). Schritt 4 sagt:

Füllen Sie die erforderlichen Felder aus:

Typ: CustomScheduletasks.Task1, CustomScheduletasks

Methode: WriteTologfile

Der Typ zeigt den Namespace und die Montagedatei an. Die Methode gibt die Methode an, die die angegebene Klasse aufgerufen werden soll.

Ihr Befehl ist jetzt für die Verwendung als geplante Aufgabe bereit.

Also statt dir Run() Methode, nennen Sie es etwas anderes und setzen Sie es in die Method Feld des Befehls in Sitecore. Run() ist die Methode in der Datenbank von Sitecore, die ausgeführt wird.

Andere Tipps

Es sieht so aus, als würde Ihre Aufgabe tatsächlich ausgeführt. In der Ausnahme wird nichts davon erwähnt, dass Sie Ihre Methode nicht finden können, und die Ausnahme stammt aus Ihrer Aufgabenmethode. Versuchen Sie, einen Haltepunkt innerhalb der Methode festzulegen und zu überprüfen, welches Objekt NULL ist.

Die Parameter, die an eine geplante Aufgabe übergeben wurden, sind die Elemente, die im Feld Elemente des Befehls, des Befehlsdefinitionselements und dem Element der Zeitplandefinition angegeben sind.

Nun ... Ihre Methodendefinition sagt "rennen", wenig r. Aber in Web.Config, den Sie ausgeführt haben, verwendet Big R. Sitecore .NET-Reflexion hier, um die Methode zu finden, sodass es Fallempfindlichkeit ist.

Ich habe meine geplanten Aufgaben eher in System/Aufgaben als in web.config eingerichtet. Klappt wunderbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top