我正在对我们的应用程序中的WCF问题进行故障排除,并使用VS 2010中的WCF服务配置编辑器启用了WCF跟踪,该编辑器将以下sharedListener添加到web.config:
<sharedListeners>
<add initializeData="D:\Logs\CRCCustomerService\Web_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
现在,当我采取措施重现我的错误时,我从System.Diagostics库中抛出异常,说它无法找到XmlWriterTraceListener:
Stack Trace:
System.TypeInitializationException: The type initializer for 'System.ServiceModel.DiagnosticUtility' threw an exception. ---> System.Configuration.ConfigurationErrorsException: Couldn't find type for class System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
at System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData)
at System.Diagnostics.TypedElement.BaseGetRuntimeObject()
at System.Diagnostics.ListenerElement.GetRuntimeObject()
at System.Diagnostics.ListenerElement.GetRuntimeObject()
at System.Diagnostics.ListenerElementsCollection.GetRuntimeObject()
at System.Diagnostics.TraceSource.Initialize()
at System.Diagnostics.TraceSource.get_Listeners()
它继续了几行,但这确定了背景。
我的问题是,因为根据ObjectBrowser和Reflector,XmlWriterTraceListener是System.Diagnostics所在的同一程序集的成员类,它怎么能找不到它?
其次,由于异常堆栈中的每一行都来自系统代码,我到底如何开始调试根本原因?
答案 0 :(得分:1)
您使用的是.NET 4.0吗?
如果没有,您必须注意服务配置实用程序。它会将侦听器的版本硬编码为4.0,您需要手动更改web.config