C# 从Dynamics CRM 2011插件调用System.Diagnostics.Trace

C# 从Dynamics CRM 2011插件调用System.Diagnostics.Trace,c#,asp.net,iis-7,dynamics-crm-2011,system.diagnostics,C#,Asp.net,Iis 7,Dynamics Crm 2011,System.diagnostics,我想知道你们中是否有人对我遇到的以下问题有什么想法 下面是一些超级简单的插件代码 namespace Demo.DebugTraceBlog { public class TraceAndDebugDemo : IPlugin { public void Execute(IServiceProvider serviceProvider) { Trace.WriteLine("Started Plugin");

我想知道你们中是否有人对我遇到的以下问题有什么想法

下面是一些超级简单的插件代码

namespace Demo.DebugTraceBlog
{
    public class TraceAndDebugDemo : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            Trace.WriteLine("Started Plugin");    
            Trace.WriteLine("Plugin Working");    
            Trace.WriteLine("Ending Plugin");                
        }
    }
}
我正在使用DebugView(http://goo.gl/YRfus)查看正在写入的跟踪消息。当我作为一个插件在沙盒中运行时,我得到了预期的结果:DebugView中出现了三行代码,如果我将VS附加到沙盒工作进程,我会看到三行代码写入输出窗口。现在,当我将隔离模式更改为“无”,并让它在W3WP.EXE进程中运行时,我不会向DebugView获取任何输出,当我连接到W3WP.EXE时,我可以设置断点以验证它是否正在运行,但不会向输出窗口获取任何输出

任何关于为什么会发生这种情况的想法,以及我如何能够覆盖原因并强制非沙盒执行按预期工作的想法。我可以猜测,这与在CRM IIS进程内部运行有关,而且CRM正在抑制跟踪写入—我专门使用了跟踪而不是调试来避免这个问题,但运气不好

我知道我可以使用ITracingService,但这不符合我当前的要求。

(猜测)将此添加到配置文件中。如果有效,那么您的问题是.NET跟踪在另一个应用程序域上时,其默认侦听器存在一些问题

D:\Log\MyApp\Program
更改为ASP.NET具有完全访问权限的路径

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

本地还是在线?不确定这是否重要,但最好知道。内部同步。联机只能在沙箱中运行,跟踪在沙箱中工作正常。我找到了杰克。。。很抱歉我有过一次机会,但我意识到不是这样。我对CRM了解不多,但在debugview中,有一个选项可以捕获写入会话0的消息(捕获->
捕获全局Win32
)。如果启用该选项,是否看到消息?问题似乎不是System.Diagnostic.Trace。我刚刚将这三行代码添加到我正在使用的插件中,并且仍然能够调试到我的代码中,并且可以点击并移动这些代码行。我会先用这些代码行创建一个新插件,然后用插件注册工具部署它。