Eseguire il debug di un plug-in
Data di pubblicazione: gennaio 2017
Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Nella procedura seguente viene descritto come eseguire il debug di un plug-in che viene eseguito in Microsoft Dynamics 365 locale. Per eseguire il debug di un plug-in che viene eseguito nel sandbox in Microsoft Dynamics 365 (online), è necessario utilizzare l'analisi come descritto più avanti in questo argomento.
In questo argomento
Eseguire il debug di un plug-in in modalità sandbox
Registrazione e analisi
Eseguire il debug di un plug-in
Registrare e distribuire l'assembly del plug-in.
Se esiste un'altra copia dell'assembly nella stessa posizione e non si può sovrascrivere tale copia perché è bloccata da Microsoft Dynamics 365, è necessario riavviare il processo del servizio che esegue il plug-in. Vedere la tabella seguente per il processo di servizio corretto.Ulteriori informazioni: Registrare e distribuire plug-in
Configurare il debugger.
Allegare il debugger al processo nel server di Microsoft Dynamics 365 che eseguirà il plug-in. Vedere la tabella seguente per identificare il processo.
Configurazione di registrazione del plug-in
Processo di assistenza
online
w3wp.exe
offline
Microsoft.Crm.Application.Hoster.exe
plug-in registrati asincroni (o assembly del flusso di lavoro personalizzati)
CrmAsyncService.exe
sandbox (modalità di isolamento)
Microsoft.Crm.Sandbox.WorkerProcess.exe
Se esistono più processi in che eseguono lo stesso file eseguibile, ad esempio più processi w3wp.exe, allegare il debugger a tutte le istanze del processo eseguibile in esecuzione. Successivamente, impostare uno o più punti di interruzione nel codice del plug-in.
Verificare il plug-in.
Eseguire l'applicazione di Microsoft Dynamics 365, o un'altra applicazione personalizzata che utilizza SDK, ed eseguire qualunque azione necessaria a causare l'esecuzione del plug-in. Ad esempio, se un plug-in viene registrato per un evento di creazione di account, creare un nuovo account.
Eseguire il debug del codice del plug-in.
Apportare tutte le modifiche necessarie al codice in modo che venga eseguito nel modo desiderato. Se il codice è cambiato, compilare il codice in un assembly e ripetere i passaggi da 1 a 4 di questa procedura a seconda delle esigenze. Tuttavia, se si modificano i numeri di versione minore o maggiore dell'assembly del plug-in, è necessario annullare la registrazione della versione precedente dell'assembly e registrare la nuova versione.Ulteriori informazioni: Registrare e distribuire plug-in
Registrare il plug-in nel database.
In seguito al completamento del ciclo modifica/compilazione/distribuzione/verifica/debug del plug-in, annullare la registrazione (su disco) dell'assembly del plug-in e quindi registrare nuovamente il plug-in nel database di Microsoft Dynamics 365.Ulteriori informazioni: Registrare e distribuire plug-in
Suggerimento
È possibile eseguire il debug di un plug-in distribuito nel database. Il file simbolo dell'assembly del plug-in compilato (.pdb) deve essere copiato nella cartella \<crm-root>\Server\bin\assembly del server e Internet Information Services (IIS) deve essere riavviato. Un volta completato il debug, è necessario rimuovere il file simbolo e reimpostare IIS per evitare che il processo che eseguiva il plug-in utilizzi memoria aggiuntiva.
Per ulteriori informazioni sull'esecuzione del debug di un plug-in utilizzando lo strumento Profiler per plug-in, vedere Analizzare le prestazioni dei plug-in.
Eseguire il debug di un plug-in in modalità sandbox
È importante seguire questa procedura prima della prima esecuzione di un plug-in in modalità sandbox. Se il plug-in è già stato eseguito, modificare il codice dell'assembly, causando la modifica nel server dell'hash dell'assembly, o riavviare il servizio elaborazione in modalità sandbox di Microsoft Dynamics 365 nel server della sandbox.
Configurare il server
Il processo host della sandbox monitora il processo di lavoro della sandbox che esegue il plug-in. Il processo host controlla se il plug-in smette di rispondere, se sta superando le soglie di memoria e altro ancora. Se il processo di lavoro non risponde per 30 secondi, sarà chiuso. Per eseguire il debug di un plug-in in modalità sandbox, è necessario disabilitare la funzionalità di chiusura. Per disabilitare la funzionalità di chiusura, impostare la seguente chiave del Registro di sistema su 1 (DWORD):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\SandboxDebugPlugins
Eseguire il debug del plug-in
Eseguire la procedura seguente per eseguire il debug di un plug-in in modalità sandbox.
Registrare il plug-in nella sandbox (modalità di isolamento) e il distribuirlo al database del server Microsoft Dynamics 365.
Copiare il file simbolo (.pdb) dell'assembly del plug-in compilato nella cartella server\bin\assembly nel server che esegue il processo di lavoro della sandbox denominato Microsoft.Crm.Sandbox.WorkerProcess.exe. Questo è il server in cui è presente il ruolo del servizio di elaborazione in modalità sandbox.
Seguire le istruzioni visualizzate nei passaggi da 2 a 4 disponibili all'inizio di questo argomento.
Per ulteriori informazioni sull'esecuzione del debug di un plug-in utilizzando lo strumento Profiler per plug-in, vedere Analizzare le prestazioni dei plug-in.
Registrazione e analisi
Un metodo alternativo per risolvere i problemi relativi all'attività personalizzata del flusso di lavoro (codice personalizzato) rispetto al debug in Microsoft Visual Studio consiste nell'utilizzo dell'analisi. L'analisi aiuta gli sviluppatori registrando le informazioni personalizzate in fase di esecuzione come ausilio per la diagnostica della causa degli errori del codice. L'analisi è particolarmente utile per risolvere i problemi del codice personalizzato registrato di Microsoft Dynamics 365 (online), dato che è l'unico metodo di risoluzione dei problemi supportato per tale scenario. L'analisi è supportata per il codice personalizzato registrato di attendibilità parziale (sandbox) e attendibilità totale durante l'esecuzione sincrona o asincrona. L'analisi non è supportata per il codice personalizzato che esegue Microsoft Dynamics 365 per Outlook o altro client per dispositivi mobili.
La registrazione delle informazioni di analisi in fase di esecuzione per Microsoft Dynamics 365 viene fornita da un servizio denominato ITracingService. Le informazioni fornite a tale servizio dal codice personalizzato possono essere registrate in tre posizioni diverse come indicato di seguito.
Registro di traccia
I record dei registri di traccia di tipo PluginTraceLog sono disponibili nell'applicazione Web passando a Impostazioni e scegliendo il riquadro Registro di traccia plug-in. Il riquadro è disponibile solo se puoi accedere ai record di entità del registro di traccia nel ruolo di sicurezza assegnato. La scrittura dei record è controllata dalle impostazioni di traccia indicate nella prossima sezione. Per ulteriori informazioni sui privilegi richiesti per l'entità PluginTraceLog, vedi Privilegi per entità.
Nota
La registrazione della traccia occupa lo spazio di archiviazione dell'organizzazione soprattutto quando molte analisi ed eccezioni vengono generate. Devi attivare la registrazione della traccia solo per il debug o la risoluzione dei problemi e disattivarla al termine del controllo.
Finestra di dialogo dell'errore
Un plug-in registrato sincrono o un'attività flusso di lavoro personalizzata che restituisce un'eccezione ai risultati della piattaforma in una finestra di dialogo dell'errore nell'applicazione Web presentata all'utente collegato. L'utente può selezionare il pulsante Scarica file di registro nell'interazione per visualizzare il registro contenente l'output dell'analisi e dell'eccezione.
Processo di sistema
Per l'attività flusso di lavoro personalizzata o il plug-in registrato asincrono che restituisce un'eccezione, le informazioni di traccia vengono visualizzate nell'area Dettagli del modulo Processo di sistema nell'applicazione Web.
Abilitare la registrazione della traccia
Per abilitare la registrazione della traccia in un'organizzazione che supporta questa funzionalità, nell'applicazione Web passa a Impostazioni > Amministrazione > Impostazioni di sistema. Nella scheda Personalizzazione individua il menu a discesa denominato Abilita inserimento nel registro di traccia plug-in e seleziona una delle opzioni disponibili.
Opzione |
Descrizione |
---|---|
Disattivato |
La scrittura nel registro di traccia è disabilitata. Nessun record PluginTraceLog verrà creato. Tuttavia, il codice personalizzato può comunque chiamare il metodo Trace anche se non viene scritto alcun registro. |
Eccezioni |
Le informazioni di traccia sono scritte nel registro se un'eccezione viene restituita alla piattaforma dal codice personalizzato. |
Tutti |
Le informazioni di traccia sono scritte nel registro al completamento del codice o quando un'eccezione viene restituita alla piattaforma dal codice personalizzato. |
Se il valore del registro di traccia è impostato su Eccezione e il codice personalizzato restituisce un'eccezione alla piattaforma, viene creato un record del registro di traccia e le informazioni di traccia vengono scritte in una posizione. Per il codice personalizzato che viene eseguito in modo sincrono, le informazioni vengono presentate all'utente nella finestra di dialogo di errore, in caso contrario, per il codice asincrono, le informazioni vengono scritte nel processo di sistema correlato.
Per impostazione predefinita, i ruoli Amministratore di sistema e Addetto alla personalizzazione del sistema dispongono dei privilegi necessari per modificare l'impostazione del registro di traccia che è archiviata in un record di entità TraceSettings. Le impostazioni della traccia sono per l'ambito di un'organizzazione.
Scrivere nel servizio di analisi
Prima di scrivere nel servizio di analisi, devi prima estrarre l'oggetto servizio di analisi dal contesto di esecuzione precedente. Successivamente, aggiungi semplicemente le chiamate Trace al codice personalizzato laddove appropriato, passando tutte le informazioni diagnostiche pertinenti nella chiamata al metodo.
//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"];
Quindi, compila e distribuisci l'attività flusso di lavoro personalizzata o il plug-in. Durante l'esecuzione del codice personalizzato, le informazioni fornite nelle chiamate al metodo Trace sono scritte in un record dell'entità del registro di traccia da ITracingService, se supportato dall'organizzazione e abilitato, e possono inoltre essere messe a disposizione degli utenti in una finestra di dialogo Web o in un processo di sistema come descritto nella sezione precedente. Le informazioni di traccia scritte nel registro di traccia vengono configurate nelle impostazioni della traccia. Per ulteriori informazioni, vedere Abilitare la registrazione della traccia.
Nota
Se il codice personalizzato viene eseguito in una transazione di database e si verifica un'eccezione che causa il rollback della transazione, tutte le modifiche apportate ai dati dell'entità dal codice verranno annullate. Tuttavia, i record di PluginTraceLog rimangono inalterati al termine del rollback.
informazioni sul servizio di analisi
ITracingService suddivide in batch le informazioni che gli vengono fornite dal metodo Trace. Le informazioni vengono scritte in un nuovo record PluginTraceLog al termine dell'esecuzione del codice personalizzato o quando viene generata un' eccezione.
I record di PluginTraceLog hanno una durata limitata. Un processo in background di eliminazione in blocco viene eseguito una volta al giorno per eliminare i record dopo 24 ore dalla creazione. Questo processo può essere disabilitato se necessario.
Vedere anche
Sviluppo dei plug-in
Analizzare le prestazioni dei plug-in
Registrare e distribuire plug-in
Pipeline di esecuzione evento
Scrivere un plug-in
Isolamento di plug-in, attendibilità e statistiche
Metodi e messaggi dell'entità PluginTraceLog
Microsoft Dynamics 365
© 2017 Microsoft. Tutti i diritti sono riservati. Copyright