Задание таймера SharePoint нацелено на конкретное веб-приложение? - PullRequest
2 голосов
/ 02 ноября 2011

Я пытаюсь развернуть пользовательское SPJobDefinition, которое я хочу запустить для определенного веб-приложения. Я подумал, что смогу сделать это, используя базовый конструктор веб-приложения для SPJobDefinition и передав нужное веб-приложение. Я делаю это в приемнике событий FeatureActivation функции веб-приложения:

            TestJob Job = new TestJob("Test", webApp);
            // TODO: change the schedule to run nightly; one time for testing purposes only
            SPOneTimeSchedule schedule = new SPOneTimeSchedule(DateTime.Now);
            TestJob.Schedule = schedule;                
            TestJob.Update();

Вот конструктор для самой работы:

    public TestJob(string jobName, SPWebApplication webApplication)
        : base(jobName, webApplication, null, SPJobLockType.Job)
    {
        this.Title = jobName;
    }

Похоже, что работа выполняется на всех веб-приложениях независимо. Есть предложения?

1 Ответ

1 голос
/ 02 ноября 2011

Небольшая ошибка: вам нужно привести определение задания таймера как таковое, а не как ваше пользовательское ChangeRequestRollup.

Так же сделайте следующее для вашего приемника функций:

SPJobDefinition changeRequestRollupJob = new ChangeRequestRollup("Devon PMO Change Requests Report", webApp);
// install timer job, on a daily scheduleSPDailySchedule dailySchedule = new SPDailySchedule
{
    BeginHour = 07,
    BeginMinute = 11,
    BeginSecond = 00,
    EndHour = 09,
    EndMinute = 12,
    EndSecond = 00
};

changeRequestRollupJob.Schedule = dailySchedule;
changeRequestRollupJob.Update();

Я также не уверен насчет вашего SPOneTimeSchedule, поэтому я изменил его, чтобы использовать SPDailySchedule.Кроме того, он должен работать так же хорошо, как вы это сделали.

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