Задание таймера от SPWeb

Я предполагаю, что запуск задания таймера из кода требует администраторских учетных данных Фермы. Однако я должен запустить задание таймера с веб-части, которая будет использоваться в любом сайте. Теперь, когда я пытаюсь запустить задание, оно дает мне ошибку доступа запрещен, очевидно, потому что идентификационные данные пула приложений не являются администратором фермы. Какие-либо идеи о том, как решить этот вопрос?

Спасибо,

6
задан WhiteKnight 3 May 2012 в 20:15
поделиться

2 ответа

Задания таймера выполняются администратором фермы и не предназначены для непосредственного запуска конечным пользователем. Поскольку некоторые задания могут быть ресурсоемкими, только администратор фермы может создавать новые задания или изменять расписание для существующих заданий.

Одним из решений является использование инфраструктуры SPWorkItem для постановки в очередь пользовательских заданий, которые затем обрабатываются пользовательским заданием таймера, полученным из SPWorkItemJobDefinition. Ваш веб-парт будет вызывать SPSite.AddWorkItem для добавления рабочего элемента. При выполнении задания таймера он будет искать любые рабочие элементы с соответствующим GUID WorkItemType и вызывать перегрузку ProcessWorkItem .

6
ответ дан 10 December 2019 в 02:43
поделиться

Вы правы. Чтобы запустить задание таймера, пользователь пула приложений должен быть администратором фермы. Поскольку для запуска задания таймера необходимо обновить объект SPJobDefinition с помощью SPSchedule . SPJobDefinition - это SPPersistedObject , который хранится в базе данных конфигурации SharePoint. Только администраторы фермы могут писать в эту базу данных.

Я не вижу способа решить эту проблему.

Обходной путь: В зависимости от ваших требований вы можете написать основное задание, которое запускается на регулярной основе. Это задание может запросить список SharePoint и запустить другое задание, определенное таким элементом списка. Поскольку основное задание выполняется под учетной записью администратора фермы, задание сможет запустить новое задание таймера.

3
ответ дан 10 December 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: