问题
我目前正在尝试使用“计划和命令”在数据库中设置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使用通过此启动作业方法调用的方法发送的参数吗?
答案 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中设置了计划任务。像魅力一样。