Я работал с некоторыми кодом, который кто-то передал мне для задания таймера. Он не предоставил код активации фактические функции, так что мне пришлось написать его, Конечно. Я воспользовался Andrew Connell известного блога по этому вопросу.
Я использую Visual Studio 2010 и развертывания хранятся сбой с сообщением об ошибке «Произошла ошибка в шаге развертывания 'Добавление решения': Ссылка на объект не указывает на экземпляр объекта."
Я принимал его код слишком буквально. Я области видимости функции на уровне веб-приложения, как показано:
В результате, свойства, которые отправляются получателю, из веб-приложения, не семейства сайтов. В конце концов, код выглядит следующим образом:
общественности переопределять void FeatureActivated(SPFeatureReceiverProperties свойства)
{// Не делайте следующее с областью действия приложения веб-, Это приводит в отчаяние
// Сайт SPSite = свойства.Feature.Parent как SPSite;SPWebApplication ва = свойства.Feature.Parent как SPWebApplication;
Если (ва == null) нового исключения(«webapp2 — значение null».);
по каждому элементу (SPJobDefinition работа в Вашингтон.JobDefinitions)
{Попробуйте
{
Если (работа.Имя == List_JOB_NAME)работа.Удаление();
}
улов (Исключение e)
{
нового исключения(«маркер 2»);
} // поймать исключение e
}// установить задание
WeatherForecastTimerJob weatherForecastTimerJob =
новые WeatherForecastTimerJob(List_JOB_NAME, ва);Расписание SPMinuteSchedule = новый SPMinuteSchedule();
расписание.BeginSecond = 0;
расписание.EndSecond = 59;
расписание.Интервал = 5;
weatherForecastTimerJob.Schedule = расписание;
weatherForecastTimerJob.Update();}
Ключ на вынос, что, когда функция укладывается в веб-приложении, SPFeatureReceiverProperties, передающий SharePoint ресивер функция имеет web приложения уровня параметров. Старые записи Андрея предполагает, что он имеет областью действия семейство узлов.
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin