Eu tenho trabalhado com alguns códigos que alguém deu-me para um trabalho de timer. Ele não tinha fornecido o código de ativação do recurso real, então eu tinha que escrevê-lo, É claro. Aproveitei Post do famoso blog de Andrew Connell sobre o assunto.
Estou usando o Visual Studio 2010 e implantação manteve a falhar com um erro "ocorreu um erro na etapa de implantação Add Solution': Referência de objeto não definida para uma instância de um objeto."
Eu estava tomando seu código demasiado literalmente. Foi de escopo o recurso de nível de aplicativo da web, como mostrado:
Como resultado, são as propriedades que são enviadas para o receptor do aplicativo da web, não é um conjunto de sites. No final, o código tem esta aparência:
public override void FeatureActivated(SPFeatureReceiverProperties Propriedades)
{// Não fazer o seguinte com recursos web app no escopo, Ele leva ao desespero
// SPSite t: Microsoft.SharePoint.SPSite site = Propriedades.Feature.Parent como SPSite t: Microsoft.SharePoint.SPSite;SPWebApplication wa = Propriedades.Feature.Parent como SPWebApplication;
se (WA = = null) lançar nova exceção("webapp2 é nulo.");
foreach (SPJobDefinition trabalho em wa.JobDefinitions)
{Tente
{
se (trabalho.Nome = = List_JOB_NAME)trabalho.Excluir();
}
pegar (Exceção e)
{
lançar nova exceção("marcador de 2");
} // catch exceção e
}// Instale o trabalho
WeatherForecastTimerJob weatherForecastTimerJob =
WeatherForecastTimerJob novo(List_JOB_NAME, WA);SPMinuteSchedule agenda = novo SPMinuteSchedule();
Agende.BeginSecond = 0;
Agende.EndSecond = 59;
Agende.Intervalo = 5;
weatherForecastTimerJob.Schedule = agenda;
weatherForecastTimerJob.Update();}
A chave de Take-Away é que quando o recurso é escopo para uma correia fotorreceptora app, o SPFeatureReceiverProperties que SharePoint passa para o receptor de recurso tem parâmetros de nível de aplicativo da web. Entrada de blog antiga de Andrew pressupõe que o escopo dele está no conjunto de sites.
</fim>
Siga-me no Twitter em http://www.twitter.com/pagalvin