Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Catégorie : Maintenabilité, capacité de prise en charge
Potentiel d’impact : Moyen
Symptoms
Le débogage et la résolution des problèmes ou des comportements de plug-ins sont difficiles sans journalisation complète ou traçage détaillé.
Conseils
L’interface ITracingService permet aux développeurs d’enregistrer des informations personnalisées au moment de l’exécution. Ces informations facilitent le diagnostic de la cause des défaillances de code ou du comportement inattendu dans les plug-ins. Avant d’écrire dans le service de suivi, extrayez d’abord l’objet de service de suivi du contexte d’exécution passé. Ensuite, ajoutez des appels trace à votre code personnalisé, le cas échéant. Transmettez toutes les informations de diagnostic pertinentes dans cet appel de méthode.
Note
La journalisation des traces à l’aide de l’interface ITracingService fonctionne uniquement lorsque le plug-in est inscrit en mode bac à sable. Vous devez activer la journalisation des traces pour obtenir des données d’exécution. Pour plus d’informations, consultez Suivi et journalisation.
//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
Le suivi 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 suivi prend en charge sandboxed le code personnalisé inscrit (approbation partielle) pendant l’exécution synchrone ou asynchrone.