我有一个调用WCF服务的客户端(单元测试)(在控制台应用程序中以调试模式托管)。
我的服务有误,但我不知道哪个。我需要跟踪它,但不能在客户端生成任何文件svclog。
任何建议,任何示例代码都有效吗?
编辑:我使用登录EntLibrary 4.1。我认为配置错误和WCF诊断跟踪不跟踪日志。
我在客户端的配置是:
<system.diagnostics configSource="Config\diagnostics.config" />
<system.serviceModel>
<behaviors configSource="Config\system.servicemodel.behaviors.config" />
<bindings configSource="Config\system.servicemodel.bindings.config" />
<client configSource="Config\system.servicemodel.client.config" />
<diagnostics wmiProviderEnabled="false">
<messageLogging logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
/>
</diagnostics>
</system.serviceModel>
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning" propagateActivity="true" >
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource" switchValue="Warning, ActivityTracing">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="TraceLog.svclog" />
</sharedListeners>
</system.diagnostics>
<loggingConfiguration configSource="Config\loggingConfiguration.config"/>
<exceptionHandling configSource="Config\exceptionHandling.config" />
答案 0 :(得分:2)
您可能希望将switchValue
设置为All
- 这将记录所有内容。 (参见表格2/3下页here。)
如果您的服务器上出现错误,请将<diagnostics>
元素添加到服务器的web.config文件中,而不是客户端的web.config文件中。如果错误在您的服务器上,那么您需要在那里跟踪它。我想如果你的服务出错了,那么在客户端上进行跟踪不会给你提供与服务器端跟踪相同的信息。
如果您可以提供有关您所看到的错误的更多信息,那也会有所帮助。我会相应地更新我的答案。
希望这有帮助!