Delen via


Fouten opsporten in een invoegtoepassing

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

In de volgende stappen wordt beschreven hoe u fouten opspoort in een invoegtoepassing die op Microsoft Dynamics 365 on-premises wordt uitgevoerd. Om fouten op te sporten in een invoegtoepassing die wordt uitgevoerd in de sandbox op Microsoft Dynamics 365 (online), moet u tracering gebruiken zoals die verderop in dit onderwerp wordt beschreven.

In dit onderwerp

Debug a plug-in

Fouten opsporen in een sandboxed plug-in

Registreren en traceren

Fouten opsporen in een invoegtoepassing

  1. De assembly van de invoegtoepassing registreren en implementeren.

    Als er een ander exemplaar van de assembly op dezelfde locatie staat en u kunt deze niet overschrijven omdat deze kopie is vergrendeld door Microsoft Dynamics 365, moet u het serviceproces dat de invoegtoepassing uitvoert opnieuw starten. Raadpleeg de onderstaande tabel voor het serviceproces.Meer informatie: Plug-ins registreren en inzetten

  2. De debugger configureren.

    Koppel de debugger aan proces op de Microsoft Dynamics 365 server die uw invoegtoepassing zal uitvoeren. Zie de volgende tabel om het proces te identificeren.

    Registratieconfiguratie van de invoegtoepassing

    Serviceproces

    on line

    w3wp.exe

    offline

    Microsoft.Crm.Application.Hoster.exe

    asynchroon geregistreerde invoegtoepassingen (of aangepaste werkstromenassemblies)

    CrmAsyncService.exe

    sandbox (isolatiemodus)

    Microsoft.Crm.Sandbox.WorkerProcess.exe

    Als er meerdere processen hetzelfde uitvoerbare bestand uitvoeren, bijvoorbeeld meerdere w3wp.exe processen, koppelt u de debugger aan alle exemplaren van het lopende uitvoerbare proces. Vervolgens stelt u een of meer onderbrekingspunten in uw plug-incode in.

  3. Test de plug-in.

    Voer de Microsoft Dynamics 365 toepassing uit, of andere aangepaste toepassingen die SDK gebruiken, en voer de actie uit die is vereist om de plug-in uit te voeren. Bijvoorbeeld, als een plug-in is geregistreerd voor een gebeurtenis voor accountverwezenlijking, maakt u een nieuw account.

  4. Fouten opsporen in uw plug-incode.

    Maak eventuele benodigde wijzigingen in uw code zodat deze volgens wens wordt uitgevoerd. Als de code wordt gewijzigd, compileert u de code in een assembly en herhaalt u stap 1 tot en met 4 in deze procedure indien nodig. Als u de grote of kleine versienummers van de plug-inassembly wijzigt, moet u de registratie van de eerdere versie van de assembly ongedaan maken en de nieuwe versie registreren.Meer informatie: Plug-ins registreren en inzetten

  5. De plug-in registreren in de database.

    Nadat de cyclus bewerken/compileren/implementeren/testen/fouten opsporten voor uw invoegtoepassing is voltooid, maakt u de registratie (op de schijf) van de assembly ongedaan en registreert u vervolgens de plug-in opnieuw in de Microsoft Dynamics 365 - database.Meer informatie: Plug-ins registreren en inzetten

Tip

Het is mogelijk om fouten op te sporen in een in een database ingezette plug-in. Het symboolbestand van de gecompileerde plug-inassembly (.pdb) moet op de server worden gekopieerd naar de <crm-root>\Server\bin\assembly map en Internet Information Services (IIS) moet opnieuw worden gestart. Nadat de foutopsporing is voltooid, moet u het symboolbestand verwijderen en IIS opnieuw instellen om te voorkomen dat het proces dat de plug-in uitvoerde, extra geheugen gebruikt.

Voor meer informatie over fouten opsporen in een plug-in met het Profiler-hulpprogramma, zie Prestaties van invoegtoepassingen analyseren.

Fouten opsporen in een sandboxed plug-in

Het is belangrijk dat u deze stappen uitvoert voordat een sandboxed plug-in voor het eerst wordt uitgevoerd. Als de plug-in al is uitgevoerd, kunt u de code van de assembly wijzigen, waardoor de hash van de assembly wijzigt op de server, of de Microsoft Dynamics 365 Sandbox Processing Service op de sandboxserver opnieuw opstarten.

De Server configureren

Het hostproces van de sandbox controleert het sandboxwerkproces dat de plug-in uitvoert. Het hostproces controleert of de plug-in stopt met reageren, als het geheugendrempelwaarden overschrijdt, en meer. Als het werkerproces gedurende meer dan 30 seconden niet reageert, wordt het afgesloten. Om fouten op te sporen in een sandboxplug-in, moet u deze afsluitingfunctie uitschakelen. Om de afsluitingfunctie uit te schakelen, stelt u de volgende registersleutel in op 1 (DWORD):

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\SandboxDebugPlugins

Fouten opsporen in de plug-in

Volg deze stappen om fouten op te sporen in een sandboxed plug-in.

  1. Registreer de plug-in in de sandbox (isolatiemodus) en implementeer het op de Microsoft Dynamics 365 serverdatabase.

  2. Kopieer het symboolbestand (.pdb) van de gecompileerde plug-intoepassingassembly naar de map server\bin\assembly op de server die het sandboxwerkerproces uitvoert met de naam Microsoft.Crm.Sandbox.WorkerProcess.exe. Dit is de server met de Servicerol sandboxverwerking.

  3. Volg de instructies in de stappen 2 tot 4 hierboven aan het begin van dit onderwerp.

Voor meer informatie over fouten opsporen in een plug-in met het Profiler-hulpprogramma, zie Prestaties van invoegtoepassingen analyseren.

Registreren en traceren

Een alternatieve methode voor het oplossen van problemen met een invoegtoepassing of aangepaste werkstroomactiviteit (aangepaste code), vergeleken met het oplossen van fouten in Microsoft Visual Studio, is het gebruik van tracering. Tracering helpt ontwikkelaars door aangepaste informatie tijdens uitvoeringstijd vast te leggen als hulp bij het zoeken naar de oorzaak van niet-werkende code. Tracering is vooral handig om fouten op te sporen in aangepaste code die in Microsoft Dynamics 365 (online) is geregistreerd, aangezien dit de enige ondersteunde foutopsporingsmethode is voor dat scenario. Tracering wordt ondersteund voor aangepaste code in een sandbox-exemplaar (gedeeltelijk vertrouwd) en volledig vertrouwde geregistreerde aangepaste code en tijdens synchrone of asynchrone uitvoering. Tracering wordt niet ondersteund voor aangepaste code die wordt uitgevoerd in Microsoft Dynamics 365 voor Outlook of een andere mobiele client.

Het opnemen van traceringsinformatie tijdens uitvoeringstijd voor Microsoft Dynamics 365 vindt plaats door een service met de naam ITracingService. Informatie die aan deze service wordt verstrekt via aangepaste code kan op drie verschillende manieren worden vastgelegd, zoals hier geïdentificeerd.

  • Traceerlogboek

    Traceerlogboekrecords van het type PluginTraceLog zijn te vinden in de webtoepassing door naar Instellingen te navigeren en vervolgens de tegel Traceerlogboek plug-in te kiezen. Deze tegel is alleen zichtbaar als u toegang tot de entiteitsrecords voor het traceerlogboek hebt in uw toegewezen beveiligingsrol. Het wegschrijven van deze records wordt beheerd door de traceringsinstellingen die in het volgende gedeelte worden genoemd. Zie voor informatie over vereiste bevoegdheden voor de PluginTraceLog-entiteit: Bevoegdheden per entiteit.

    Notitie

    Traceerlogboekregistratie neemt opslagruimte van de organisatie in beslag, met name als er vele traceringen en uitzonderingen worden gegenereerd. Schakel traceerlogboekregistratie alleen in voor foutopsporing en het oplossen en schakel het uit nadat uw onderzoek is voltooid.

  • Foutdialoogvenster

    Een synchroon geregistreerde invoegtoepassing of aangepaste werkstroomactiviteit die een uitzondering retourneert naar het platform resulteert in een foutdialoogvenster in de webtoepassing dat wordt aangeboden aan de aangemelde gebruiker. De gebruiker kan de knop Logboekbestand downloaden in het dialoogvenster selecteren om het logboekbestand met uitzonderingen en traceringsuitvoer te bekijken.

  • Systeemtaak

    Voor een asynchroon geregistreerde invoegtoepassing of aangepaste werkstroomactiviteit die een uitzondering retourneert, wordt de traceringsinformatie weergegeven in het gebied Details van de Systeemtaak in de webtoepassing.

Traceringslogboekregistratie inschakelen

U kunt traceringslogboekregistratie inschakelen in een organisatie die deze functie ondersteunt door in de webtoepassing naar registreren van traceringsEen beheerder kan het Web API-voorbeeld in de webtoepassing naar Instellingen > Beheer > Systeeminstellingen te navigeren. Zoek op het tabblad Aanpassing de vervolgkeuzelijst Logboekregistratie naar traceerlogboek van de plug-in inschakelen en selecteer een van de beschikbare opties.

Optie

Beschrijving

Uit

Schrijven naar het traceerlogboek is uitgeschakeld. Er worden geen PluginTraceLog-records gemaakt. Er kan met aangepaste code echter nog steeds de methode Trace worden aangeroepen hoewel geen logboekinformatie wordt weggeschreven.

Uitzonderingen

Traceringsinformatie wordt weggeschreven naar het logboek als een uitzondering terug naar het platform wordt doorgegeven vanuit aangepaste code.

Alle

Traceringsinformatie wordt weggeschreven naar het logboek na voltooiing van code of als een uitzondering terug naar het platform wordt doorgegeven vanuit de aangepaste code.

Als de instelling voor traceringslogboekregistratie is ingesteld op Uitzondering en uw aangepaste code retourneert een uitzondering aan het platform, wordt een traceringslogboekrecord gemaakt en wordt tevens traceringsinformatie weggeschreven naar een andere locatie. Voor aangepaste code die synchroon wordt uitgevoerd, wordt de informate aan de gebruiker gepresenteerd in een foutdialoogvenster. Anders, voor asynchrone code, wordt de informatie weggeschreven naar de gerelateerde systeemtaak.

Standaard hebben de beveiligingsrollen Systeembeheerder en Systeemaanpasser de vereiste bevoegdheden voor het wijzigen van de instelling voor traceringslogboekregistratie, die zijn opgeslagen in een entiteitsrecord TraceSettings. Traceringsinstelling hebben een organisatiebereik.

Schrijven naar de traceringsservice

Voordat wordt weggeschreven naar de traceringsservice, moet u eerst het traceringsserviceobject extraheren uit de doorgegeven uitvoeringscontext. Voeg daarna simpelweg waar nodig Trace-aanroepen toe aan uw aangepaste code om relevante diagnosegegevens in die methodeaanroep door te geven.


//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") &amp;&amp;
    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"];

Maak en installeer vervolgens de plug-in of aangepaste werkstroomactiviteit. Tijdens de uitvoering van de aangepaste code, wordt de informatie die wordt verstrekt in de aanroep van de methode Trace weggeschreven naar een entiteitsrecord voor traceringslogboek door ITracingService, indien ondersteund door uw organisatie en ingeschakeld, en wordt deze tevens mogelijk beschikbaar gesteld aan de gebruiker in een webdialoogvenster of systeemtaak zoals beschreven in het vorige gedeelte. Traceringsinformatie die naar het traceringslogboek wordt weggeschreven wordt geconfigureerd in de traceringsinstellingen. Raadpleeg Traceringslogboekregistratie inschakelen voor meer informatie.

Notitie

Als uw aangepaste code wordt uitgevoerd binnen een databasetransactie en zich een uitzondering voordoet waardoor een transactie wordt teruggedraaid, worden alle wijzigingen van entiteitgegevens door uw code ongedaan gemaakt. De PluginTraceLog-records blijven echter nadat het terugdraaien is voltooid.

Over de traceringsservice

De ITracingService neemt de informatie die hieraan wordt verstrekt op in batches via de methode Trace. De informatie wordt weggeschreven naar een nieuwe PluginTraceLog-record nadat de aangepaste code met succes is voltooid of nadat zich een uitzondering heeft voorgedaan.

PluginTraceLog-records hebben een eindige levensduur. Er wordt eenmaal per dag een achtergrondtaak voor bulkverwijdering uitgevoerd voor het verwijderen van records die ouder zijn dan 24 uur na het aanmaken. Deze taak kan zo nodig worden uitgeschakeld.

Zie ook

Ontwikkeling van plug-ins
Prestaties van invoegtoepassingen analyseren
Plug-ins registreren en inzetten
Pipeline voor gebeurtenisuitvoering
Een invoegtoepassing schrijven
Isolatie, trusts en statistieken van invoegtoepassingen
Berichten en methoden van de entiteit PluginTraceLog

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht