Jeg har arbejdet med nogle kode, der nogen udleveres til mig til et timeren job. Han ikke havde forudsat aktiveringskoden faktiske funktion, så jeg var nødt til at skrive det, Selvfølgelig. Jeg benyttede Andrew Connells berømte blogindlæg om emnet.
Jeg bruger Visual Studio 2010 og implementering holdt ikke med en fejl "der opstod fejl i installationen trin 'Tilføj løsning': Objektreferencen er ikke indstillet til en forekomst af et objekt. "
Jeg tog hans kode for bogstaveligt. Jeg scoping funktionen til webprogramniveau, som vist:
Som et resultat, de egenskaber, der sendes til modtageren er fra web application, ikke en gruppe af websteder. I sidste ende, koden ligner denne:
offentlige tilsidesætte void FeatureActivated(SPFeatureReceiverProperties egenskaber)
{// Ikke gøre følgende med web-app virkefelt funktioner, Det fører til fortvivlelse
// SPSite websted = egenskaber.Feature.Parent som SPSite;SPWebApplication wa = egenskaber.Feature.Parent som SPWebApplication;
Hvis (WA == null) Udløs nye undtagelse("webapp2 er null.");
foreach (SPJobDefinition job i wa.JobDefinitions)
{Prøv
{
Hvis (job.Navn == List_JOB_NAME)job.Slette();
}
fangst (Undtagelse e)
{
Udløs nye undtagelse("mærke 2");
} // fange undtagelse e
}// installere jobbet
WeatherForecastTimerJob weatherForecastTimerJob =
nye WeatherForecastTimerJob(List_JOB_NAME, WA);SPMinuteSchedule tidsplan = nye SPMinuteSchedule();
planlægge.BeginSecond = 0;
planlægge.EndSecond = 59;
planlægge.Interval = 5;
weatherForecastTimerJob.Schedule = tidsplan;
weatherForecastTimerJob.Update();}
Nøglen take-away er, at når funktionen udføres på Webserverniveau en web app, den SPFeatureReceiverProperties, der SharePoint overfører til din funktion modtager har web app niveau parametre. Andrews gamle blogindlæg antager det udføres på Webserverniveau samlingen websted.
</slutningen>
Følg mig på kvidre på http://www.twitter.com/pagalvin