Sitecore调度参数

时间:2011-04-29 14:17:24

标签: c# sitecore job-scheduling

问题

我目前正在尝试使用“计划和命令”在数据库中设置Sitecore计划任务。

到目前为止,我已经按照http://sdn.sitecore.net/FAQ/Administration/Scheduled%20tasks.aspx了解了我所需要的大部分内容。他们的方法使用:public void WriteToLogFile(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem)。我假设这是在计划项目,命令项本身和计划项目本身中传递的项目。

我有一个运行函数,它遵循相同的语法:protected void run(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduleditem)。我收到了一个异常,因为它在我的日志中运行。 Linked是异常堆栈:http://pastie.org/1847345,但这里是嵌套异常:

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)

我尝试了几种不同的参数组合,但没有运气。

安排web.config部分:

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

有人知道sitecore使用通过此启动作业方法调用的方法发送的参数吗?

3 个答案:

答案 0 :(得分:1)

根据您在SDN上链接的代码段,我认为您创建了自己的方法,类似于WriteToLogFile但不是Run()。第4步说:

  

填写必要的字段:

     

输入:CustomScheduleTasks.Task1,CustomScheduleTasks

     

方法:WriteToLogFile

     

Type表示命名空间和程序集文件。 Method指示调用指定类的方法。

     

您的命令现在可以用作计划任务。

因此,不要使用Run()方法,而是将其命名为其他内容,并将其设置在Sitecore中命令的Method字段中。 Run()是Sitecore中运行的DatabaseAgent中的方法。

答案 1 :(得分:1)

看起来您的任务实际上正在运行。例外没有提到任何关于无法找到您的方法的事情,并且异常来自您的任务方法。尝试在方法中设置断点并检查哪个对象为空。

仅供参考,传递给计划任务的参数是在命令的items字段,命令定义项和计划定义项中指定的项。

答案 2 :(得分:0)

嗯......你的方法定义说“跑”,小r。但是在web.config中你有Run,大R.Sitecore在这里使用.Net反射来查找方法,所以它会区分大小写。

我在System / Tasks而不是web.config中设置了计划任务。像魅力一样。