Ожидаемое поведение «Доступ запрещен», учитывая то, что вы пытаетесь сделать. Позвольте мне объяснить.
Когда создается экземпляр задания таймера, он сохраняется в базе данных конфигурации фермы. Доступ к этой базе данных для целей записи - это привилегированная операция; как правило, успешно выполняется только учетная запись службы фермы (то есть учетная запись, по которой выполняется OWSTIMER.EXE) или учетные записи, которые явно имеют права, необходимые для выполнения такой операции в базе данных конфигурации (обычно это администраторы).
По умолчанию попытка создания экземпляра задания таймера из контекста семейства сайтов будет терпеть неудачу. Попытка выполнить операцию в блоке привилегированных привилегий (через SPSecurity.RunWithElevatedPrivileges) приведет только к использованию контекста учетной записи пула приложений веб-приложения вместо текущего контекста пользователя; это может быть выполнено только в том случае, если учетная запись пула приложений имеет права на запись в базу данных конфигурации фермы. Если это происходит, это обычно происходит потому, что (а) учетная запись службы фермы используется в ролях, в которых она не должна находиться (например, для запуска веб-приложений контента) или (б) дополнительные разрешения были предоставлены пулу приложений Счет. Оба случая представляют собой отклонение от оптимальной рабочей модели.
Рабочие экземпляры таймера обычно создаются при включении функции «Функции» в разделе «Возможности», которые находятся на уровне фермы или WebApplication. Зачем? Поскольку эти функции обычно активируются администраторами из командной строки (при условии, что администратор также имеет права в базе данных конфигурации фермы) или из централизованного администрирования (где активация происходит через учетную запись службы фермы - гарантируется наличие прав на базу данных конфигурации). Когда функция активирована и вызывается метод FeatureActivated SPFeatureReceiver, безопасно (с точки зрения безопасности) настраивать задание таймера.
Устранение неполадок, связанных с вашей конкретной задачей, потребует поворота проблемы на голове. Вместо того, чтобы пытаться создать экземпляр задания таймера из семейства сайтов по требованию, я бы рекомендовал настроить эквивалент задания таймера «развертки» во время активации вашей функции. По общему признанию, это требует больше планирования и усилий, чем то, что вы пытаетесь сделать, но ваш текущий путь будет работать, только если безопасность будет скорректирована - и это не рекомендуется.
Когда я собирал свою флеш-память для фермы BLOB (http://blobcachefarmflush.codeplex.com), мне приходилось делать то же самое.Вы можете увидеть особенности того, как я работал с созданием заданий таймера в классе FeatureReceiver (BlobCacheFarmFlushSweepJobFeatureReceiver). Остальная часть кода и связанная с ним документация также могут помочь в решении некоторых других проблем.
Не стесняйтесь использовать то, что вы находите в любом случае; вот почему он там!
Я надеюсь, что это поможет. Если у вас есть последующие вопросы, уберите их, и я отвечу как можно лучше :-)
Hey Sean Thanx для вашего ответа ..... Я нашел его очень полезным. Я обязательно спрошу, если у меня будет .... Thanx again – Anoop
Как настроить и запустить это задание? – Evgeny
Я администратор моего компьютера. – Evgeny