J'ai une fonctionnalité SharePoint dans le champ d'application de l'application Web qui devrait créer une tâche de temporisation.
Lors de l'activation de la fonction (avant de créer ce travail) et lors de la désactivation de la fonction, je veux supprimer le travail s'il existe déjà. Voici le code d'activation de la fonction :
public class myJob : SPJobDefinition
public myJob() : base("JobName", SPAdministrationWebApplication.Local, null, SPJobLockType.Job) {}
}
public class JobFeature : SPFeatureReceiver
{
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWebApplication application = properties.Feature.Parent as SPWebApplication;
// 1. Delete old Job if exists
foreach (SPJobDefinition job in application.JobDefinitions)
{
if (string.Equals(job.Name, "JobName"))
{
job.Delete(); // NEVER GETS HERE
}
}
// 2. Install job
myJob deploymentJob = new myJob();
SPMinuteSchedule schedule = new SPMinuteSchedule { BeginSecond = 0, EndSecond = 59, Interval = 5 };
deploymentJob.Schedule = schedule;
deploymentJob.Update(); // CRASHES
}
}
Le problème est que : Le code qui devrait supprimer le travail n'est jamais atteint. Le job ne semble pas être dans application.JobDefinitions. ("// NEVER GETS HERE" dans le code ci-dessus)
Mais lorsque j'essaie de créer le job de déploiement, j'obtiens une exception indiquant que le job existe déjà ("// CRASHES" dans le code ci-dessus) :
{"An object of the type myJob named \"JobName\" already exists under the parent Microsoft.SharePoint.Administration.SPAdministrationWebApplication named \"\". Rename your object or delete the existing object."}
Où se trouve l'erreur ?