简体   繁体   中英

Calling System.Diagnostics.Trace from a Dynamics CRM 2011 Plugin

Wondering if any of you have any ideas about the following issue I'm running into.

Here is some super simple plug-in code.

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

I'm using DebugView (http://goo.gl/YRfus) to view the Trace messages being written. When I execute this code as a plug-in running in the sandbox I get the results I expect: three lines appear in DebugView and if I attach VS to the Sandbox worker process I see three lines written to the Output window. Now when I change the isolation mode to none, and let it run in the W3WP.EXE process I do not get any output to DebugView and when I attach to W3WP.EXE I can set a breakpoint to validate it is running but I do not get any output to the Output window.

Any idea of why this is occurring and how I can go about overriding the cause and force the non-sandbox execution to work as expected. I can take some guesses about it having to do with running inside of the CRM IIS processes and that CRM is suppressing the Trace writing – I specifically used Trace instead of Debug in attempt to avoid the issue, but no luck.

I know I can use the ITracingService but that does not meet my current requirement.

(A guess) Add this to your config file. If it worked then your problem is that the .NET trace has some problem with it's default listener when it's on another app domain.

Change D:\\Log\\MyApp\\Program to a path that ASP.NET has full access to.

...
<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>
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM