CLR Не могу найти тип, даже если он находится в той же сборке - PullRequest
0 голосов
/ 03 декабря 2011

Я устраняю проблему с 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, как он НЕ может быть не в состоянии найти его?

И, во-вторых, поскольку каждая строка в стеке исключений происходит из системного кода, как же мне начать отлаживать основную причину здесь?

1 Ответ

1 голос
/ 11 февраля 2012

Используете ли вы .NET 4.0?

Если нет, вам следует остерегаться утилиты настройки службы.Он жестко закодирует версию слушателя до 4.0, и вам нужно будет вручную изменить ваш web.config

...