Ho lavorato con alcuni codici che qualcuno consegnato a me per un processo timer. Egli non aveva fornito il codice di attivazione effettiva funzionalità ho avuto modo di scrivere, Naturalmente. Ho approfittato di Post del famoso blog di Andrew Connell sul tema.
Sto utilizzando Visual Studio 2010 e distribuzione tenute fallito con errore "errore in fase di distribuzione 'Aggiungi soluzione': Riferimento all'oggetto non impostato su un'istanza di un oggetto."
Mi stava prendendo il suo codice troppo alla lettera. Stavo definizione dell'ambito la funzionalità a livello di applicazione web, come illustrato:
Di conseguenza, le proprietà che vengono inviate al ricevitore sono dall'applicazione web, non una raccolta di siti. Alla fine, il codice è simile al seguente:
public override void FeatureActivated(Proprietà SPFeatureReceiverProperties)
{// Non fare le seguenti operazioni con funzionalità web app nell'ambito, Essa conduce alla disperazione
// Sito SPSite = proprietα.Feature.Parent come SPSite;SPWebApplication wa = proprietα.Feature.Parent come SPWebApplication;
Se (wa = = null) generare nuova eccezione("webapp2 is null.");
foreach (SPJobDefinition lavoro in wa.JobDefinitions)
{provare
{
Se (lavoro.Nome = = List_JOB_NAME)lavoro.Eliminare();
}
catture (Eccezione e)
{
generare nuova eccezione("marker 2");
} // catch exception e
}// installare il lavoro
WeatherForecastTimerJob weatherForecastTimerJob =
nuova WeatherForecastTimerJob(List_JOB_NAME, wa);SPMinuteSchedule schedule = SPMinuteSchedule nuovo();
pianificare.BeginSecond = 0;
pianificare.EndSecond = 59;
pianificare.Interval = 5;
weatherForecastTimerJob.Schedule = pianificazione;
weatherForecastTimerJob.Update();}
La chiave da asporto è che quando la funzionalità è nell'ambito di un'applicazione web, il SPFeatureReceiverProperties che SharePoint passa al vostro ricevitore caratteristica ha parametri livello web app. Vecchio post di blog di Andrew presuppone che esso è definito nell'ambito della raccolta siti.
</fine>
Seguimi su Twitter a http://www.twitter.com/pagalvin