Note : Cet article est une traduction.; ajout d'un "using" dans le code.

Introduction

Les timer jobs dans SharePoint 2010 sont des tâches s'exécutant sur un ou plusieurs serveurs à une date spécifiée. Ils peuvent être configurés pour s'exécuter seulement une fois, ou en se basant sur une programmation régulière. Nous avons déployé un tel timer job dans l'Administration Centrale.

Récemment j'ai eu un besoin des utilisateurs du métier qui souhaitaient avoir une option dans une page leur permettant de démarrer le timer job à partir de la Collection de Sites, pour qu'ils n'aient pas à demander à ceux qui gèrent la ferme de démarrer le timer job à un moment donné.

Cependant, quand on essaye d'accéder à un timer job à partir de la collection de sites, une erreur "Accès refusé" est renvoyé.
Voici la solution pour  Démarrer un Timer Job à partir d'une collection de sites plutôt qu'à partir de l'Admin Centrale.

Solution

Pour accéder au Timer job dans la Collection de sites, nous devons paramétrer la propriété "RemoteAdministratorAccessDenied" du webservice à false.

SPWebService.ContextService.RemoteAdministratorAccessDenied = false;

Une fois ceci fait, si nous essayons de démarrer le timer job à partir de la collection de sites çà fonctionne parfaitement bien. Voici un exemple où nous effectuons ceci depuis un bouton présent sur une page de la collection de sites.

using (SPSite site = new SPSite("site")){
foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
{
   if (job.Name == "Timerjobname"){
      job.RunNow();
      }
}}

Autres langues

Cet article est également disponible dans les langues suivantes :