Попытка установить SPJobDefinition; не отображается в списке - PullRequest
1 голос
/ 25 июня 2009

Я пытаюсь следовать http://msdn.microsoft.com/en-us/library/cc406686.aspx и подобным учебникам. У меня есть пользовательская производная SPJobDefinition и функция. Определение еще ничего не делает, так как я просто пытаюсь его настроить. Функция имеет следующий код в FeatureActivation:

        // Get the Site Collection in which this is being activated
        SPSite siteCollection = (SPSite)properties.Feature.Parent;

        // Make sure the job isn't already registered
        foreach (SPJobDefinition jobDefinition in siteCollection.WebApplication.JobDefinitions)
            if (jobDefinition.Name.Equals(TIMER_JOB_NAME))
                jobDefinition.Delete();

        // Create the job
        Form40EscalationTimer timerJob = new Form40EscalationTimer(
                TIMER_JOB_NAME,
                siteCollection.WebApplication,
                null,
                SPJobLockType.Job
            );
        SPMinuteSchedule schedule = new SPMinuteSchedule();
        schedule.BeginSecond = 0;
        schedule.EndSecond = 59;
        schedule.Interval = int.Parse(ConfigurationManager.AppSettings["Form40EscalationJobIntervalMinutes"]);
        timerJob.Schedule = schedule;
        timerJob.Update();

        // Install the job - not here originally, tried from http://www.codeguru.com/cpp/misc/misc/microsoftofficeoutlook/print.php/c14133__1/
        siteCollection.WebApplication.JobDefinitions.Add(timerJob);
        siteCollection.WebApplication.Update();

Чего мне не хватает? Все развертывается нормально, а функция активируется нормально, но не отображается в списке определений заданий!

Ответы [ 4 ]

1 голос
/ 24 февраля 2011

После каждого обновления кода вам необходимо не только развернуть DLL в GAC, но и перезапустить службу «Таймер SharePoint 2010».

1 голос
/ 26 июня 2009

Вот код, который я использую при развертывании timerjob. Разница в том, что я развертываю веб-приложение, а вы - семейство сайтов (я полагаю, ваша функция относится к области Scope):

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
  SPWebApplication application = properties.Feature.Parent as SPWebApplication;

  // make sure the job isn't already registered
  foreach (SPJobDefinition job in application.JobDefinitions)
  {
    if (job.Name == ARCHIVE_JOB_NAME)
      job.Delete();
  }

  // install the job
  NewsArchiverTimerJob archiveJob = new NewsArchiverTimerJob(ARCHIVE_JOB_NAME, application);

  SPMinuteSchedule schedule = new SPMinuteSchedule();
  schedule.BeginSecond = 0;
  schedule.EndSecond = 59;
  schedule.Interval = 30;

  archiveJob.Schedule = schedule;

  archiveJob.Update();}
0 голосов
/ 22 февраля 2010

Вам необходимо развернуть dll с определением задания таймера (выполнить и т. Д.) В GAC (C:\WINDOWS\assembly)

0 голосов
/ 26 июня 2009

Я действительно забыл добавить информацию о получателе функции в файл feature.xml, поэтому функция активировалась, но задание таймера не показывалось.

Однако я столкнулся с другой проблемой - задание таймера не выполняет ничего при выполнении, независимо от того, что я вставил в код выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...