5

Come dice il titolo, sto cercando un modo per distinguere tra un errore causato dal mio codice o funzionalità CRM di base e un errore generato da qualsiasi plug-in personalizzato che può essere installato sul sistema client.Esiste un modo per sapere se un'eccezione MS CRM è stata generata da un plug-in?

Qualcosa a cui cadiamo continuamente vittima sono i plug-in personalizzati di terze parti dei clienti che hanno creato in casa o acquistati da un altro ISV. Lo registrano su un'entità CRM che tocchiamo o persino su una delle nostre entità nel caso più recente. Proviamo a fare qualcosa, il plugin cerca di fare la sua cosa e fallisce. Nell'esempio più recente, il plug-in non codifica un 'correttamente dopo averlo inserito in CRM. Il plugin genera un errore e CRM lo restituisce a noi.

Come posso dire che il plug-in è il colpevole senza sprecare ore a investigare? Finora ho visto solo una compagnia che lo rendeva facile, gettando la traccia dello stack dei plugin come messaggio di errore.

edit per CHIAREZZA:

  • Sto cercando una soluzione programmatica per ridurre il tempo necessario per identificare il problema è un plugin personalizzato e non il nostro codice interagire con il loro CRM da Azure .
  • Sto tentando di migliorare la nostra registrazione/gestione degli errori per essere intelligente abbastanza per dire la differenza.
  • Anche se il nostro codice funziona al 100% ma attiva un plug-in sincrono per attivare e il plug-in non funziona, otteniamo un'eccezione da CRM.
  • Tutto ciò che facciamo è programmatico tramite l'SDK.
+0

Quindi questo è un fallimento che si verifica quando il plugin tenta di eseguire una certa azione che provoca un altro plugin per fallire, che poi fa sì che il plugin di fallire ? Oppure si tratta di un errore che si verifica con un plug-in prima che il tuo plugin si attivi? – Daryl

+0

Non siamo tecnicamente un 'plugin' Abbiamo un'app che viene eseguita in Azure che interagisce con un sistema CRM dei clienti. L'errore si verifica nel plug-in dei clienti che ci ricollega anche se abbiamo realizzato ciò che stavamo cercando di fare, ma otteniamo ancora un errore. –

+0

Quindi stai interagendo con l'SDK? – Daryl

risposta

2

L'unica cosa che viene in mente è abilitare il tracciamento CRM. Il seguente collegamento dovrebbe spiegare come eseguire ciò in Microsoft Dynamics CRM.

http://support.microsoft.com/kb/907490

+1

Scusate, avrei dovuto accennare sopra. Sto cercando una soluzione programmatica che possa essere automatizzata e parte della nostra registrazione degli errori. Far passare il cliente e attivare la tracciatura fa parte delle ore di indagine che sto cercando di ridurre. –

1

Quando c'è un'eccezione causata da un plugin come questa immagine: enter image description here

è possibile scaricare il file di log, al suo interno si può facilmente trovare quale plug-in ha causato l'eccezione, controllare per esempio questo registro:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: StupidPluginDetail: 
// ... other details 
[StupidPlugin: StupidPlugin.ExamplePlugin] 
[bda9ad85-c4a5-e211-bc00-78e7d162ee67: StupidPlugin.ExamplePlugin: Create of orderclose] 
</TraceText> 
</OrganizationServiceFault> 
+0

Stiamo interagendo con il CRM dei clienti a livello di codice tramite l'SDK in modo da non ottenere quel messaggio. –

0

Questo non sarebbe consigliato per l'uso in un ambiente di produzione, ma sarebbe estremamente vantaggioso per un ambiente di test. Ogni volta che un'operazione CRUD non riesce a utilizzare l'SDK, è possibile disattivare a livello di programmazione tutti i plug-in e tentare la stessa operazione. Se ha successo, abilita i plugin uno alla volta fino a quando fallisce. Quindi sarai in grado di determinare quale plug-in è quello che sta causando il problema, o se non è affatto un plugin.

1

Dai un'occhiata a Detail.TraceText proprietà di eccezione restituita dal servizio. Io non sono riuscito a ottenere pieno traccia dello stack, ma è tornato un po 'di informazioni che indica dove le cose andavano male:

Mario.CRM.TestOrg.Plugins: Mario.CRM.TestOrg.Plugins.ContactPreUpdate

[ 5ee31a9e-3558-e211-adeb-00155d014401: Mario.CRM.TestOrg.Plugins.ContactPreUpdate: Aggiornamento del contatto]

codice di esempio di snippet di

try 
{ 
    //create service proxy and call service 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(((System.ServiceModel.FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>)(ex)).Detail.TraceText); 
} 
+0

Dovrò esaminarlo, sembra interessante. –

Problemi correlati