[英]Calling System.Diagnostics.Trace from a Dynamics CRM 2011 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附加到Sandbox工作進程,我會看到三行寫入Output窗口。 現在,當我將隔離模式更改為none,並讓它在W3WP.EXE進程中運行時,我沒有得到任何輸出到DebugView,當我附加到W3WP.EXE時,我可以設置一個斷點來驗證它是否正在運行但是我沒有獲取任何輸出到輸出窗口。
知道為什么會發生這種情況以及如何重寫原因並強制非沙盒執行按預期工作的任何想法。 我可以猜測它與運行CRM IIS進程內部有關,而CRM正在抑制Trace寫入 - 我專門使用Trace而不是Debug來試圖避免這個問題,但沒有運氣。
我知道我可以使用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>
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.