Я успешно развернул задания таймера для функций, ограниченных так же тесно, как «Интернет», без проблем.
Сделав это таким образом, мне было проще связать настройки задания с конкретными экземплярами списка, и мне не нужно жестко кодировать URL-адреса семейства сайтов или что-либо еще в код задания.
Вам все еще нужно убедиться, что вы зарегистрировали его в веб-приложении, и вот как я спроектировал активацию своей функции для своей функции в веб-области:
Public Overrides Sub FeatureActivated(ByVal properties As SPFeatureReceiverProperties)
Dim web As SPWeb = DirectCast(properties.Feature.Parent, SPWeb)
' Remove job if it exists.
DeleteJobAndSettings(web.Site.WebApplication)
' Create the job.
Dim job As New TimerJob_myClass(TimerJob_myClass.JobName, web.Site.WebApplication)
Кроме того, несмотря на то, что это веб-функция, которая отображается в разделе «Управление функциями», лучше пометить ее как скрытую. Этот тип функции может быть активирован только путем запуска командной строки stsadm из PowerShell. Например:
stsadm -o activatefeature -url http://intranet.contoso.local/ -id 01234567-AAAA-BBBB-CCCC-DDDDEEEEFFFF
Вы должны запускать PowerShell как пользователь, имеющий права на базу данных контента, связанную с сайтом, с которым вы работаете. Пул приложений, который обычно запускал бы код получателя функции во время активации графического интерфейса, не имеет доступа к базе данных конфигурации, и поэтому он не работает через графический интерфейс.