7

私が直面している次の問題について何か考えがあるかどうか疑問に思っています.

以下は、非常に単純なプラグイン コードです。

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) を使用して、書き込まれている Trace メッセージを表示しています。このコードをサンドボックスで実行するプラグインとして実行すると、期待どおりの結果が得られます。3 つの行が DebugView に表示され、VS をサンドボックス ワーカー プロセスにアタッチすると、出力ウィンドウに 3 つの行が表示されます。分離モードを none に変更して W3WP.EXE プロセスで実行すると、DebugView への出力が得られず、W3WP.EXE にアタッチすると、ブレークポイントを設定して実行中であることを確認できますが、実行していません。出力ウィンドウへの出力を取得します。

これが発生している理由と、原因を無効にして非サンドボックスの実行を強制的に期待どおりに機能させる方法についてのアイデア。CRM IIS プロセス内での実行に関係していることと、CRM が Trace の書き込みを抑制していることについて、いくつか推測できます。問題を回避するために、特に Debug ではなく Trace を使用しましたが、うまくいきませんでした。

ITracingService を使用できることはわかっていますが、現在の要件を満たしていません。

4

1 に答える 1

2

(推測) これを構成ファイルに追加します。それが機能した場合、問題は、.NET トレースが別のアプリ ドメインにある場合に、デフォルトのリスナーに問題があることです。

D:\Log\MyApp\ProgramASP.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>
...
于 2013-05-14T07:55:58.957 に答える