Я устраняю проблему с WCF в нашем приложении и включил трассировку WCF с помощью редактора конфигурации служб WCF в VS 2010, который добавил следующий 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, как он НЕ может быть не в состоянии найти его?
И, во-вторых, поскольку каждая строка в стеке исключений происходит из системного кода, как же мне начать отлаживать основную причину здесь?