Ik heb gewerkt met wat code die iemand gaf aan mij voor een timeropdracht. Hij had niet de werkelijke functie activeren wetboek voorzien zodat ik moest schrijven het, Natuurlijk. Nam ik voordeel van Andrew Connell de beroemde blogpost over het onderwerp.
Ik ben met behulp van Visual Studio 2010 en implementatie gehouden niet met een fout "fout opgetreden in implementatie stap 'Toevoegen oplossing': Object reference not set to een exemplaar van een object. "
Ik nam zijn code ook letterlijk. Ik was de functie op het niveau van de webtoepassing scoping, zoals:
Als een resultaat, de eigenschappen die worden verzonden naar de ontvanger zijn van de webtoepassing, niet een siteverzameling. In het einde, de code ziet er als volgt:
openbare nietige FeatureActivated overschrijven(SPFeatureReceiverProperties eigenschappen)
{// Doe het volgende met web app scoped functies niet, het leidt tot wanhoop
// SPSite site = eigenschappen.Feature.Parent als SPSite;SPWebApplication wa = eigenschappen.Feature.Parent als SPWebApplication;
Als (WA == null) nieuwe uitzondering gooien("webapp2 is null".);
foreach (SPJobDefinition baan in wa.JobDefinitions)
{Probeer
{
Als (baan.Naam List_JOB_NAME ==)baan.Verwijderen();
}
vangst (Uitzondering e)
{
nieuwe uitzondering gooien("marker 2");
} // Overstaptijd voor de uitzondering e
}// installeren van de baan
WeatherForecastTimerJob weatherForecastTimerJob =
nieuwe WeatherForecastTimerJob(List_JOB_NAME, WA);SPMinuteSchedule schema = nieuwe SPMinuteSchedule();
schema.BeginSecond = 0;
schema.EndSecond = 59;
schema.Interval = 5;
weatherForecastTimerJob.Schedule = plannen;
weatherForecastTimerJob.Update();}
De sleutel take-away is dat wanneer de functie is een web app met als bereik, de SPFeatureReceiverProperties SharePoint doorgeeft aan de ontvanger van uw functie heeft web app niveau parameters. Andrew's oude blog post wordt verondersteld dat wordt het bereik naar de siteverzameling.
</einde>
Volg mij op Twitter op http://www.twitter.com/pagalvin