2011-10-13 57 views
1

如何在WCF中启用对任何异常的追踪(无论处理还是未处理)?这里是我配置的代码:有什么方法可以跟踪WCF中的所有异常吗?

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" switchValue="Error,ActivityTracing" 
     propagateActivity="true"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelTraceListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add initializeData="tracelog.svclog" 
     type="System.Diagnostics.XmlWriterTraceListener" 
     name="ServiceModelTraceListener" traceOutputOptions="DateTime, Timestamp, Callstack"> 
     <filter type="" /> 
     </add> 
    </sharedListeners> 
    </system.diagnostics> 

但是,然后我尝试在SvcTraceViewer中看到任何异常我没有看到异常。如何在跟踪日志中获取异常? 在此先感谢!

+0

“不要紧,是它处理... “ - 你这是什么意思?很显然,如果在OperationContract的实现中处理异常,它将永远不会被WCF基础架构看到,因此WCF可能不会记录它。 – Joe

+0

我的意思是在'try {} catch {}'块中处理的异常。 – kseen

回答

2

我没有看到在你的配置一个明显的问题,但是这是我所用,我也看到SVC跟踪查看例外:

<system.diagnostics> 
     <sources> 
      <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"> 
       <listeners> 
        <add name="XTL" /> 
       </listeners> 
      </source> 
     </sources> 
     <sharedListeners> 
      <add initializeData="trace.svclog" type="System.Diagnostics.XmlWriterTraceListener" name="XTL" /> 
     </sharedListeners> 
     <trace autoflush="true" /> 
    </system.diagnostics> 
+0

您能否指点我在​​SvcTraceViewer中可以看到异常的地方? – kseen

+0

@kseen - 在活动视图中,您应该在列表中看到红色的物品。一旦你点击其中的一个,右侧面板将显示特定的痕迹,包括红色的,代表异常的细节和堆栈帧。 –

相关问题