比較的単純なサービスホストプロセス(Service.exe)で自己ホストされているWCFサービスを診断しようとしています。私は結果のsvclogファイルを見るとWCF:メッセージ本文をトレースするにはどうすればよいですか?
<?xml version="1.0" ?>
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="All"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\temp\Service.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging maxMessagesToLog="1"
maxSizeOfMessageToLog="2147483647"
logEntireMessage="true"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true">
</messageLogging>
</diagnostics>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
が、私は(私は最初のメッセージが記録されると予想)多くのトレースイベントがログに記録されている参照、および:
私はService.exe.configこのように構成されていますトレースされるメッセージのどれもがメッセージ本体を表示しません(ヘッダーのみ)。
私はここで簡単なものを見逃しているに違いないと確信していますが、私はそれを見ません。
更新:WCF Config Editorを見ると、「Diagnostics」の下に「MessageLogging」と「Tracing」という2つのセクションがあります。私は「EnableMessageLogging」リンクをクリックすると、私のconfigファイルが更新されます:
<system.diagnostics>
<sources>
<source propagateActivity="true" name="System.ServiceModel" switchValue="All">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add initializeData="c:\temp\MessageBodyTracing.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="traceListener">
<filter type="" />
</add>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelMessageLoggingListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="c:\users\me\documents\visual studio 2010\projects\messagebodytracing\messagebodytracing\app_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
は私がSystem.ServiceModel.MessageLoggingというソースがキーだと思います - 私は、メッセージの任意のドキュメントにトレースすることを見たことがなかったです。.. 。あなたの
diagnostics
ノードで
<endToEndTracing propagateActivity="true" activityTracing="true" messageFlowTracing="true" />
を、messageLogging
下:
でMessageLoggingはなぜ 'maxMessagesToLog = "1"'のですか?それは目的ですか? –
はい、セクションのANYTHINGが有効になっているかどうかを確認したかったので、表示されませんでした。 –
lesscode