0

问题

我目前正在尝试使用 Schedules and Commands 在数据库中设置 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). 我收到了一个异常,因为它在我的日志中运行。链接的是异常堆栈: 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使用通过这种启动作业方法调用的方法发送的参数?

4

3 回答 3

1

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

填写必要的字段:

类型:CustomScheduleTasks.Task1、CustomScheduleTasks

方法:WriteToLogFile

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

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

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

于 2011-04-29T17:22:08.037 回答
1

看起来您的任务实际上正在运行。该异常没有提及任何有关无法找到您的方法的信息,并且该异常来自您的任务方法。尝试在方法内设置断点并检查什么对象为空。

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

于 2011-04-29T23:41:04.963 回答
0

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

我在 System/Tasks 而不是 web.config 中设置了我的计划任务。奇迹般有效。

于 2011-04-29T22:16:15.790 回答