Timer Job FeatureActivated et l'étendue de la fonctionnalité

J'ai travaillé avec un code que quelqu'un me remis pour un travail du minuteur.  Il n'avait pas fourni le code d'activation de la fonctionnalité réelle, donc j'ai dû écrire, Bien sûr.  J'ai pris avantage de Billet de blog célèbre de Andrew Connell sur le sujet.

Je suis à l'aide de Visual Studio 2010 et déploiement gardé échouent avec une erreur « Erreur s'est produite à l'étape de déploiement « Ajouter une Solution »: Objet référence non définie à une instance d'un objet. »

Je prenais son code trop littéralement.  J'ai été portée la fonctionnalité au niveau de l'application web, comme le montre:

image

Comme un résultat, les propriétés qui sont envoyées au récepteur sont de l'application web, pas une collection de sites.  En fin de compte, le code ressemble à ceci:

public override void FeatureActivated(Propriétés SPFeatureReceiverProperties)
{

    // Ne pas faire ce qui suit avec des fonctionnalités web app portée, elle conduit au désespoir Sourire
    // Site SPSite = propriétés.Feature.parent comme SPSite;

    SPWebApplication wa = propriétés.Feature.parent comme SPWebApplication;

    Si (wa == null) throw new Exception(« webapp2 est nulle. »);

    foreach (Emploi de SPJobDefinition wa.JobDefinitions)
    {

        Essayez
        {
            Si (emploi.Nom == List_JOB_NAME)

                emploi.Supprimer();
        }
        captures (Exception e)
        {
            throw new Exception(« marqueur 2 »);
        } // catch exception e
    }

    // installer le poste

    WeatherForecastTimerJob weatherForecastTimerJob =
        Nouvelle WeatherForecastTimerJob(List_JOB_NAME, wa);

    Annexe SPMinuteSchedule = nouveau SPMinuteSchedule();
    calendrier.BeginSecond = 0;
    calendrier.EndSecond = 59;
    calendrier.Intervalle = 5;
    weatherForecastTimerJob.Schedule = calendrier;
    weatherForecastTimerJob.Update();

}

La clé à emporter est que lorsque la fonction est définie sur une application web, le SPFeatureReceiverProperties que SharePoint transmet à votre récepteur de fonctionnalité a paramètres niveau de l'application web.  Ancienne entrée de blog de Andrew suppose c'est dont la portée est la collection de sites.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Laisser une réponse

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *