Freigeben über


ITracingService in Plug-Ins verwenden

Kategorie: Wartbarkeit, Supportfähigkeit

Wirkungspotential: Mittel

Symptome

Das Debuggen und/oder die Fehlerbehebung bei Plug-in-Problemen oder -Verhalten ist kompliziert, ohne eine umfangreiche und aufschlussreiche Protokollierung oder Nachverfolgung.

Anleitung

Die ITracingService-Schnittstelle unterstützt Entwickler durch die Aufzeichnung von benutzerdefinierten Informationen zur Laufzeit als Hilfe bei der Diagnose der Ursache von Codefehlern oder unerwartetem Verhalten in Plugins. Bevor Sie in den Tracing-Service schreiben, müssen Sie zunächst das Tracing-Service-Objekt aus dem übergebenen Ausführungskontext extrahieren. Anschließend fügen Sie einfach Trace-Aufrufe zu Ihrem benutzerdefinierten Code hinzu, wobei Sie gegebenenfalls alle relevanten Diagnoseinformationen in diesem Methodenaufruf übergeben.

Hinweis

Die Ablaufprotokollierung mit der Schnittstelle ITracingService funktioniert nur, wenn das Plug-in im Sandbox-Modus registriert ist und Sie die Ablaufprotokollierung aktivieren müssen, um Laufzeitdaten zu erhalten. Weitere Informationen finden Sie unter: Protokollierung und Verfolgung

//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"];
}

Weitere Informationen

Die Ablaufverfolgung ist besonders hilfreich bei der Problembehebung von registriertem benutzerdefiniertem Code, da dies die einzige unterstützte Problembehebungsmethode für dieses Szenario ist. Das Tracing wird für sandboxed (partial trust) und full trust registrierten benutzerdefinierten Code sowie während der synchronen oder asynchronen Ausführung unterstützt. Ablaufverfolgung wird nicht unterstützt für benutzerdefinierten Code, der in Microsoft Dynamics 365 for Outlook oder einem anderen Mobil-Client ausgeführt wird.

Siehe auch

Schreiben eines Plug-Ins
Protokollierung und Ablaufverfolgung

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).