我正在尝试部署一个自定义SPJobDefinition,我想针对特定的web应用程序运行。我认为我可以通过使用SPJobDefinition的web应用程序作用域基构造函数并传入我想要的web应用程序来实现这一点。我在web应用程序功能的FeatureActivated事件接收器中这样做:
TestJob Job = new TestJob("Test", webApp);
// TODO: change the schedule to run nightly; one time for testing purposes only
SPOneTimeSchedule schedule = new SPOneTimeSchedule(DateTime.Now);
TestJob.Schedule = schedule;
TestJob.Update();
下面是作业本身的构造函数:
public TestJob(string jobName, SPWebApplication webApplication)
: base(jobName, webApplication, null, SPJobLockType.Job)
{
this.Title = jobName;
}
似乎在运行的所有web应用程序,不管。有什么建议吗?
这里有一个小错误:您需要将您的Timer Job定义转换为这样,而不是自定义的ChangeRequestRollup
。
因此,为您的特征接收器执行以下操作:
SPJobDefinition changeRequestRollupJob = new ChangeRequestRollup("Devon PMO Change Requests Report", webApp);
// install timer job, on a daily scheduleSPDailySchedule dailySchedule = new SPDailySchedule
{
BeginHour = 07,
BeginMinute = 11,
BeginSecond = 00,
EndHour = 09,
EndMinute = 12,
EndSecond = 00
};
changeRequestRollupJob.Schedule = dailySchedule;
changeRequestRollupJob.Update();
我也不确定你的SPOneTimeSchedule
,所以我修改为使用SPDailySchedule
。除此之外,它应该像你所做的那样工作得很好。