2013-01-06 15 views
7

Mi chiedo se qualcuno di voi ha qualche idea sul problema che sto seguendo.Chiamare System.Diagnostics.Trace da un plug-in Dynamics CRM 2011

Ecco un codice plug-in molto semplice.

namespace Demo.DebugTraceBlog 
{ 
    public class TraceAndDebugDemo : IPlugin 
    { 
     public void Execute(IServiceProvider serviceProvider) 
     { 
      Trace.WriteLine("Started Plugin");  
      Trace.WriteLine("Plugin Working");  
      Trace.WriteLine("Ending Plugin");     
     } 
    } 
} 

sto utilizzando DebugView (http://goo.gl/YRfus) per visualizzare i messaggi Trace stato scritto. Quando eseguo questo codice come plug-in in esecuzione nella sandbox ottengo i risultati che mi aspetto: tre righe appaiono in DebugView e se collego VS al processo di lavoro Sandbox vedo tre righe scritte nella finestra Output. Ora quando cambio la modalità di isolamento su none e lo faccio girare nel processo W3WP.EXE non ottengo alcun output su DebugView e quando collego a W3WP.EXE posso impostare un breakpoint per convalidarlo è in esecuzione ma non lo faccio ottiene qualsiasi output nella finestra Output.

Qualsiasi idea del motivo per cui si sta verificando e su come posso ignorare la causa e forzare l'esecuzione di non sandbox come previsto. Posso fare alcune congetture su ciò che ha a che fare con l'esecuzione dei processi di IIS CRM e che il CRM sta sopprimendo la scrittura di Trace - Ho usato specificamente Trace invece di Debug nel tentativo di evitare il problema, ma senza fortuna.

So che posso usare ITracingService ma che non soddisfa il mio attuale requisito.

+0

On-premise o on-line? Non sono sicuro se è importante, ma è bello saperlo. –

+0

Locale sincrono. On-line può essere eseguito solo nella sandbox e Trace funziona perfettamente nella sandbox. – Nicknow

+0

Ho preso jack ... mi dispiace. Ho avuto uno sparo ma ho capito che non è vero. –

risposta

2

(A guess) Aggiungi questo al tuo file di configurazione. Se ha funzionato, il problema è che la traccia .NET ha qualche problema con il listener predefinito quando si trova su un altro dominio dell'app.

Modificare D:\Log\MyApp\Program in un percorso a cui ASP.NET ha accesso completo.

... 
<system.diagnostics> 
<switches> 
... 
</switches> 
<sources> 
... 
</sources> 
<trace autoflush="true"> 
    <listeners> 
    <clear /> 
    <add name="defaultListener" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 
     initializeData="FileLogWriter" 
     Append="true" 
     AutoFlush="true" 
     BaseFileName="program" 
     CustomLocation="D:\Log\MyApp\Program" 
     DiskSpaceExhaustedBehavior="DiscardMessages" 
     Encoding="Unicode" 
     IncludeHostName="false" 
     LogFileCreationSchedule="Daily" 
     location="Custom" 
     MaxFileSize="900000000000" /> 
    <add name="programConsoleListener" type="System.Diagnostics.ConsoleTraceListener" /> 
    </listeners> 
</trace> 
</system.diagnostics> 
... 
Problemi correlati