Partager via


Utilisation d’ITracingService dans les plug-ins

Catégorie : Maintenabilité, capacité de prise en charge

Potentiel d’impact : Moyen

Symptômes

Les problèmes ou les comportements de débogage et/ou de dépannage de plug-ins sont compliqués sans une journalisation ou un traçace complet et judicieux.

Recommandation

L’interface ITracingService aide les développeurs en enregistrant des informations personnalisées sur l’exécution en tant qu’aide en diagnostiquant la cause des échecs de code ou de comportement inattendu dans les connexions. Avant d’écrire au service de traçage, vous devez d’abord extraire l’objet du service de traçage depuis le contexte d’exécution passé. Ensuite, ajoutez simplement les appels de Trace à votre code personnalisé, lorsqu’il est nécessaire de transmettre les informations de diagnostic appropriées dans cet appel de méthode.

Notes

La journalisation du suivi à l’aide de l’interface ITracingService s’exécute uniquement lorsque le plug-in est enregistré en mode Sandbox et vous devez activer la journalisation du suivi afin d’obtenir les données d’exécution. Pour plus d’informations voir : Journalisation et traçage.

//Extract the tracing service for use in debugging sandboxed plug-ins.
ITracingService tracingService =
    (ITracingService)serviceProvider.GetService(typeof(ITracingService));

// Obtain the execution context from the service provider.
IPluginExecutionContext context = (IPluginExecutionContext)
    serviceProvider.GetService(typeof(IPluginExecutionContext));

// For this sample, execute the plug-in code only while the client is online. 
tracingService.Trace("AdvancedPlugin: Verifying the client is not offline.");
if (context.IsExecutingOffline || context.IsOfflinePlayback)
    return;

// The InputParameters collection contains all the data passed 
// in the message request.
if (context.InputParameters.Contains("Target") &&
    context.InputParameters["Target"] is Entity)
{
    // Obtain the target entity from the Input Parameters.
    tracingService.Trace("AdvancedPlugin: Getting the target entity from Input Parameters.");
    Entity entity = (Entity)context.InputParameters["Target"];

    // Obtain the image entity from the Pre Entity Images.
    tracingService.Trace("AdvancedPlugin: Getting image entity from PreEntityImages.");
    Entity image = (Entity)context.PreEntityImages["Target"];
}

Informations supplémentaires

Il est particulièrement utile pour résoudre les problèmes de code personnalisé inscrit car il s’agit de la seule méthode de résolution des problèmes prise en charge pour ce scénario. Le traçage est pris en charge pour le code personnalisé inscrit exigeant une confiance totale ou en mode sandboxed (confiance partielle) et lors de l’exécution synchrone ou asynchrone. Le traçage n’est pas pris en charge pour le code personnalisé qui s’exécute dans Microsoft Dynamics 365 for Outlook ou un autre client mobile.

Voir aussi

Écrire un plug-in
Traçage et enregistrement

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).