Del via


Fejlfinding af en plug-in

 

Udgivet: januar 2017

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Nedenstående trin beskriver, hvordan du kan foretage fejlfinding af en plug-in i Microsoft Dynamics 365 i det lokale miljø. Hvis du vil foretage fejlfinding af en plug-in, der afvikles i sandkassen på Microsoft Dynamics 365 (online), skal du bruge sporing som beskrevet senere i dette emne.

Dette emne indeholder

Debug a plug-in

Fejlfinding af en sandkasse-plug-in

Logføring og sporing

Fejlfinding af en plug-in

  1. Registrer og udrul plug-in-assemblyen.

    Hvis der er en anden kopi af assemblyen på samme placering, og du ikke kan overskrive denne kopi, fordi den er låst af Microsoft Dynamics 365, skal du genstarte servicen, som udførte plug-in-processen. Se tabellen nedenfor for at få den rette serviceproces.Flere oplysninger: Registrere og installere plug-ins

  2. Konfigurer fejlfindingsprogrammet.

    Knyt fejlfindingsprogrammet til processen på den Microsoft Dynamics 365-server, der kører din plug-in. Se følgende tabel for at identificere processen.

    Konfiguration af plug-in-registrering

    Serviceproces

    online

    w3wp.exe

    offline

    Microsoft.Crm.Application.Hoster.exe

    asynkront registrerede plug-ins (eller tilpassede arbejdsproces-assemblies)

    CrmAsyncService.exe

    sandkasse (isolationstilstand)

    Microsoft.Crm.Sandbox.WorkerProcess.exe

    Hvis der er flere processer, der kører samme eksekverbare fil, for eksempel flere w3wp.exe-processer, skal du knytte fejlfindingsprogrammet til alle forekomster af den proces, der kører. Opret derefter et eller flere pausepunkter i din plug-in-kode.

  3. Test plug-in'en.

    Kør Microsoft Dynamics 365-programmet eller et andet brugerdefineret program, der bruger SDK, og foretag de handlinger, der er nødvendige for at køre plug-in'en. Hvis en plug-in f.eks. er registreret for en hændelse til oprettelse af et firma, skal du oprette et nyt firma.

  4. Foretag fejlfinding af din plug-in-kode.

    Foretag eventuelle ændringer i din kode, så den fungerer, som du ønsker. Hvis koden er ændret, skal du kompilere koden i en assembly og gentage trin 1 til 4 i denne procedure efter behov. Hvis du derimod ændrer overordnede eller underordnede versionsnumre for din plug-in-assembly, skal du fjerne registreringen af den tidligere version af assemblyen og registrere den nye version.Flere oplysninger: Registrere og installere plug-ins

  5. Registrer den pågældende plug-in i databasen.

    Når cyklussen rediger/kompiler/udrul/test/foretag fejlfinding af din plug-in er afsluttet, skal du fjerne registreringen af plug-in-assemblyen (på disk) og derefter registrere den pågældende plug-in igen i Microsoft Dynamics 365-databasen.Flere oplysninger: Registrere og installere plug-ins

Tip

Det er muligt at foretage fejlfinding af en databaseudrullet plug-in. Den kompilerede plug-in-assembly-symbolfil (.pdb) skal kopieres til serverens <crm-rod>\Server\bin\assembly, og IIS (Internet Information Services) skal derefter genstartes. Når fejlfinding er fuldført, skal du slette symbolfilen og nulstille IIS for at forhindre, at den proces, der udførte den pågældende plug-in, bruger ekstra hukommelse.

Du kan finde flere oplysninger om fejlfinding af en plug-in ved hjælp af værktøjet Plug-in Profiler i Analysere kørslen af plug-ins.

Fejlfinding af en sandkasse-plug-in

Det er vigtigt at udføre disse trin før første kørsel af en sandkasse-plug-in. Hvis denne plug-in allerede er udført, skal du enten ændre koden for assemblyen, så hashværdien for assemblyen ændres på serveren, eller genstarte Microsoft Dynamics 365 Tjeneste til sandkassebehandling på sandkasseserveren.

Konfiguration af serveren

Værtsprocessen for sandkassen overvåger sandkassens arbejdsproces, der udfører denne plug-in. Værtsprocessen kontrollerer, om plug-in'en holder op med at svare, hvis den overstiger hukommelsestærskler, med mere. Hvis arbejdsprocessen ikke svarer inden for 30 sekunder, bliver den lukket. Du kan foretage fejlfinding af en sandkasse-plug-in ved at deaktivere denne lukningsfunktion. Angiv følgende nøgle i registreringsdatabasen til 1 (DWORD) for at deaktivere lukningsfunktionen.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\SandboxDebugPlugins

Fejlfinding af plug-in'en

Følg disse trin for at foretage fejlfinding af en sandkasse-plug-in.

  1. Registrer den pågældende plug-in i sandkassen (isolationstilstand), og udrul den til Microsoft Dynamics 365-serverdatabasen.

  2. Kopiér symbolfilen (.pdb) for den kompilerede plug-in-assembly til server\bin\assembly-mappen på serveren, der kører sandkassens arbejdsproces med navnet Microsoft.Crm.Sandbox.WorkerProcess.exe. Det er den server, som er vært for Tjeneste til sandkassebehandling-rollen.

  3. Følg instruktionerne i trin 2-4, der vises i begyndelsen af dette emne.

Du kan finde flere oplysninger om fejlfinding af en plug-in ved hjælp af værktøjet Plug-in Profiler i Analysere kørslen af plug-ins.

Logføring og sporing

En alternativ metode til at foretage fejlfinding af en plug-in eller en brugerdefineret arbejdsprocesaktivitet (brugerdefineret kode), sammenlignet med fejlfinding i Microsoft Visual Studio, er at bruge sporing. Sporing hjælper udviklere ved at registrere brugerdefinerede kørselsoplysninger som en hjælp til at diagnosticere årsagen til fejl i kode. Sporing er især nyttig ved fejlfinding af Microsoft Dynamics 365 (online)-registreret brugerdefineret kode, da det er den eneste understøttede fejlfindingsmetode til det formål. Sporing understøttes for sandkassekode (delvis tillid) og registreret brugerdefineret kode med fuld tillid og under synkron eller asynkron kørsel. Sporing understøttes ikke af brugerdefineret kode, der køres i Microsoft Dynamics 365 til Outlook eller andre mobilklienter.

Registrering af sporingsoplysninger under kørsel for Microsoft Dynamics 365 leveres af servicen ITracingService. Oplysninger, der leveres til denne service af brugerdefineret kode kan registreres tre forskellige steder, som angivet her.

  • Sporingslog

    Du kan finde poster i sporingsloggen af typen PluginTraceLog ved at gå til Indstillinger og vælge feltet Sporingslog for plug-in i webprogrammet. Feltet er kun synligt, hvis du har adgang til objektposterne i sporingsloggen i din tildelte sikkerhedsrolle. Skrivning af disse poster styres af sporingsindstillingerne, der er nævnt i næste afsnit. Du kan finde flere oplysninger om påkrævede rettigheder for objektet PluginTraceLog i Rettigheder efter objekt.

    Bemærk

    Sporingslogføring optager lagerplads i organisationen, især når der genereres mange sporinger og undtagelser. Du bør kun aktivere sporingslogføring i forbindelse med fejlfinding og slå det fra, når undersøgelsen er afsluttet.

  • Fejldialogboks

    En synkront registreret plug-in-aktivitet eller en brugerdefineret arbejdsprocesaktivitet, der returnerer en undtagelse tilbage til platformen, resulterer i en fejl i en dialogboks i webprogrammet, som vises for den bruger, der er logget på. Brugeren kan vælge knappen Hent logfil i dialogboksen for at få vist loggen, som indeholder info om undtagelser og sporing.

  • Systemjob

    Når asynkront registrerede plug-in-aktiviteter eller brugerdefinerede arbejdsprocesaktiviteter returnerer en undtagelse, vises sporingsoplysningerne i området Detaljer i Systemjob formularen i webprogrammet.

Aktivér sporingslogføring

Når du vil aktivere sporingslogføring i en organisation, der understøtter denne funktion, skal du i webprogrammet gå til Indstillinger > Administration > Systemindstillinger. Under fanen Tilpasning skal du finde rullemenuen Aktivér logføring til sporingslog for plug-in og vælge en af de tilgængelige indstillinger.

Indstilling

Beskrivelse

Fra

Skrivning til sporingslogfilen er deaktiveret. Der oprettes ingen PluginTraceLog poster. Den brugerdefinerede kode kan dog stadig kalde Trace metoden, selvom der ikke skrives nogen logfil.

Undtagelser

Sporingsoplysninger skrives til logfilen, hvis en undtagelse sendes tilbage til platformen fra brugertilpasset kode.

Alle

Sporingsoplysninger skrives til logfilen, når koden er afviklet, hvis en undtagelse sendes tilbage til platformen fra den brugertilpassede kode.

Hvis sporingslogføringsindstillingen er Undtagelse, og din brugerdefinerede kode returnerer en undtagelse tilbage til platformen, oprettes der en sporingslogføringspost, og sporingsoplysninger skrives desuden til en anden placering. For brugerdefineret kode, der køres synkront, vises oplysningerne for brugeren i en fejldialogboks, og ellers, for asynkron kode, skrives oplysninger til det relaterede systemjob.

Som standard har rollerne Systemadministrator og Systemtilpasser de nødvendige rettigheder til at ændre indstillingen for sporingslogføringen, som gemmes i en TraceSettings-objektpost. Sporingsindstillingerne har omfang til dækning af organisationen.

Skriv til sporingsservicen

Inden du skriver til sporingsservicen, skal du udpakke sporingsserviceobjektet fra den overførte kørselskontekst. Herefter skal du blot tilføje Trace-kald til din brugerdefinerede kode, hvor det er relevant, og overføre alle relevante diagnostiske oplysninger i dette metodekald.


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

Derefter skal du bygge og udrulle plug-in-aktiviteten eller den brugerdefineret arbejdsprocesaktivitet. Under kørsel af brugerdefineret kode, skrives de oplysninger, der er angivet i Trace-metodekaldet, til en objektpost i sporingsloggen af ITracingService, hvis det understøttes af din organisation og er aktiveret, og det kan også være til rådighed for brugeren i en Web-dialogboks eller et systemjob som beskrevet i forrige afsnit. Sporingsoplysninger, der skrives til sporingslogfilen, konfigureres i sporingsindstillingerne. Du kan finde flere oplysninger i Aktivér sporingslogføring.

Bemærk

Hvis din brugerdefinerede kode køres i en databasetransaktion, og der opstår en undtagelse, der medfører en annullering af en transaktion, annulleres alle ændringer af objektdata udført af koden. Men PluginTraceLog poster annulleres ikke.

Om sporingsservicen

ITracingService opdeler de oplysninger, der modtages via Trace metoden, i batches. Oplysningerne skrives til en ny PluginTraceLog-post, når kørslen af den brugerdefinerede kode er fuldført, eller der er opstået en undtagelse.

PluginTraceLog-poster har en begrænset levetid. Der køres et massesletningsjob i baggrunden én gang om dagen for at slette poster, der blev oprettet mere end 24 timer forinden. Dette job kan deaktiveres, når det er nødvendigt.

Se også

Plug-in-udvikling
Analysere kørslen af plug-ins
Registrere og installere plug-ins
Pipeline for hændelseskørsel
Skriv en plug-in
Plug-in-isolation, -tillidsforhold og -statistik
Meddelelser og metoder for objektet PluginTraceLog

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret