Logging 企业库日志分发服务器配置中的TraceListenerData类型无效

Logging 企业库日志分发服务器配置中的TraceListenerData类型无效,logging,configuration,enterprise-library,msmq,Logging,Configuration,Enterprise Library,Msmq,我正在尝试使用企业库MSMQ分发服务器服务来获取放置在MSMQ队列中的日志消息,并通过日志块的标准数据库部分将它们放置在数据库中 但是,当我尝试启动分发服务器服务时,出现以下异常: Exception Type: System.Configuration.ConfigurationErrorsException Message: Invalid TraceListenerData type in configuration 'listenerDataType="Microsoft.Practic

我正在尝试使用企业库MSMQ分发服务器服务来获取放置在MSMQ队列中的日志消息,并通过日志块的标准数据库部分将它们放置在数据库中

但是,当我尝试启动分发服务器服务时,出现以下异常:

Exception Type: System.Configuration.ConfigurationErrorsException
Message: Invalid TraceListenerData type in configuration 'listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Database.Configuration.FormattedDatabaseTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging.Database"'. (C:\Projects\LogTest\msmqDistributor\MsmqDistributor.exe.Config line 15)
这条线看起来像这样:

  <listeners>
   <add name="Database Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.Database.FormattedDatabaseTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging.Database, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Database.Configuration.FormattedDatabaseTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging.Database"
    databaseInstanceName="LoggingDB" writeLogStoredProcName="WriteLog"
    addCategoryStoredProcName="AddCategory" formatter="Text Formatter"
    traceOutputOptions="DateTime, Timestamp" />
  <!-- other listeners -->
  </listeners>


我无法找出侦听器定义的错误所在-似乎分发服务器找不到它,但据我所知,相关dll位于同一文件夹中。在不同的应用程序上运行相同的配置可以正常工作,并将日志条目写入数据库,因此似乎这可能与服务权限有关,但我不知道需要以何种方式查找此配置。

此问题归结为.dll的版本不正确。如果同时具有企业库的源版本和二进制版本,则需要确保使用的库与用于创建配置文件的EntLibConfig.exe版本相同。因此,如果您正在使用二进制发行版中的EntLibConfig文件,则需要将二进制发行版中的DLL提供给由其配置的应用程序。否则,您的所有引用都将混乱,您将收到此类错误。

我知道您已将此标记为已回答,但我遇到了此问题,您可以解决此问题,而无需恢复到与EntLibConfig匹配的另一个EntLib版本。 在我的例子中,我使用的是EntLib版本5.0.505.0,EntLibConfig.exe需要EntLib版本5.0.414.0,就像配置文件中一样。只要将配置文件中出现的每一个version=5.0.414.0版本都添加到正确的版本中,就可以了。这应该是loggingConfiguration的配置部分以及Listener和formatter部分

缺点是您将无法再在EntLibConfig.exe中打开配置文件,因为它将尝试使用旧版本


仔细检查是否部署了Microsoft.Practices.EnterpriseLibrary.Logging.Database.dll。可能有助于查看定位程序集时是否存在任何问题。@Tuzo感谢这一提示-它非常接近问题的解决方案,我在下面介绍了该解决方案,以防其他人遇到此问题。