[英]Problem Activating Sharepoint Timer Job
我創建了一個非常簡單的共享點計時器作業。 我要做的就是遍歷一個列表並更新每個列表項,從而觸發一個運行良好的現有工作流程。 換句話說,我要做的就是解決無法按計划觸發工作流的限制。 我編寫了一個繼承自SPJobDefinition的類,該類可以完成工作,並且我有一個繼承自SPFeatureReceiver的類來安裝和激活它。 我已經使用SPVisualdev創建了該功能,而我的同事過去曾將其用於其他SP開發。
我的工作類別如下:
public class DriverSafetyCheckTrigger : SPJobDefinition
{
private string pi_SiteUrl;
public DriverSafetyCheckTrigger(string SiteURL, SPWebApplication WebApp):base("DriverSafetyCheckTrigger",WebApp,null, SPJobLockType.Job)
{
this.Title = "DriverSafetyCheckTrigger";
pi_SiteUrl = SiteURL;
}
public override void Execute(Guid targetInstanceId)
{
using (SPSite siteCollection = new SPSite(pi_SiteUrl))
{
using (SPWeb site = siteCollection.RootWeb)
{
SPList taskList = site.Lists["Driver Safety Check"];
foreach(SPListItem item in taskList.Items)
{
item.Update();
}
}
}
}
}
而功能接收者類中的唯一一件事是,我重寫了下面的FeatureActivated方法:
public override void FeatureActivated(SPFeatureReceiverProperties Properties)
{
SPSite site = Properties.Feature.Parent as SPSite;
// Make sure the job isn't already registered.
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == "DriverSafetyCheckTrigger")
job.Delete();
}
// Install the job.
DriverSafetyCheckTrigger oDriverSafetyCheckTrigger = new DriverSafetyCheckTrigger(site.Url, site.WebApplication);
SPDailySchedule oSchedule = new SPDailySchedule();
oSchedule.BeginHour = 1;
oDriverSafetyCheckTrigger.Schedule = oSchedule;
oDriverSafetyCheckTrigger.Update();
}
我的問題是,當我嘗試激活功能時,會在oDriverSafetyCheckTrigger.Update()行上引發NullReferenceException。 我不確定在這種情況下什么是null,我遵循的示例是本教程。 我不確定自己在做什么錯。
我在控制台應用程序中運行了您的代碼,並在調用.Update()時遇到以下異常
“ DriverSafetyCheckTrigger無法反序列化,因為它沒有公共默認構造函數”
也許會有幫助嗎?
我有一個類似的代碼正在我的功能接收器之一中運行:
string jobName = "MyJobDefinition";
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
if (job.Name == jobName)
{
job.Delete();
}
}
SPDailySchedule schedule = new SPDailySchedule();
schedule.EndHour = 2;
schedule.EndMinute = 59;
schedule.EndSecond = 59;
SPJobDefinition jobDefinition = new MyJobDefinition(jobName, site.WebApplication);
jobDefinition.Schedule = schedule;
jobDefinition.Update();
我想知道您的問題是否與時間表有關。 嘗試設置BeginMinute,也可以設置BeginSecond。 您也可以嘗試將“結束”值與“開始”值結合使用或代替“開始”值來設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.