Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Categoria: manutenção, capacidade de suporte
Potencial de impacto: Médio
Sintomas
A depuração e a solução de problemas de plug-ins ou comportamentos de plug-ins são difíceis sem logs ou rastreamentos avançados e perspicazes.
Orientação
A interface ITracingService ajuda os desenvolvedores ao registrar informações personalizadas em tempo de execução. Essas informações ajudam a diagnosticar a causa de falhas de código ou comportamento inesperado em plug-ins. Antes de gravar no serviço de rastreamento, primeiro extraia o objeto de serviço de rastreamento do contexto de execução passado. Em seguida, adicione chamadas de rastreamento ao código personalizado, quando apropriado. Passe qualquer informação de diagnóstico relevante nessa chamada de método.
Note
O registro em log de rastreamento usando a interface ITracingService funciona somente quando o plug-in é registrado no modo sandbox. Você deve habilitar o registro em log de rastreamento para obter dados em tempo de execução. Para obter mais informações, consulte Rastreamento e registro em log.
//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"];
}
Informações adicionais
O rastreamento é especialmente útil para solucionar problemas de código personalizado registrado, pois é o único método de solução de problemas com suporte para esse cenário. O rastreamento dá sandboxed suporte ao código personalizado registrado (confiança parcial) durante a execução síncrona ou assíncrona.