尝试获取LogWriter类型的实例时出现激活错误,键“”

时间:2011-05-31 14:31:26

标签: asp.net-mvc

登录到eventviewer时,我收到此错误。我在事件查看器中滚动异常以及滚动平面文件。如果我删除eventviewer部分,那么滚动平面文件可以很好地工作,但只有当我添加它时才会出现异常

  

{“依赖关系的解析失败,输入=   \“Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter \”,name =   \“(无)\”。\ r \ n发生以下情况时发生异常:解析时。\ r \ n \ nException   是:InvalidOperationException - TraceListener类型不能   建造。您必须配置容器以提供此功能   值。\ r \ n -------------------------------------------- --- \ r \ nAtt   异常时间,容器是:\ r \ n \ r \ n解析   Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterImpl,日志写。默认   (从Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter映射,   (无))\ r \ n解析构造函数的参数\“structureHolder \”   Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterImpl(Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterStructureHolder   structureHolder,   Microsoft.Practices.EnterpriseLibrary.Logging.Instrumentation.ILoggingInstrumentationProvider   instrumentationProvider,   Microsoft.Practices.EnterpriseLibrary.Logging.ILoggingUpdateCoordinator   updateCoordinator)\ r \ n解析   Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterStructureHolder,LogWriterStructureHolder。默认   (映射自   Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterStructureHolder,   (无))\ r \ n解析构造函数的参数\“traceSources \”   Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterStructureHolder(System.Collections.Generic.IEnumerable 1[[Microsoft.Practices.EnterpriseLibrary.Logging.Filters.ILogFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]] filters, System.Collections.Generic.IEnumerable 1 [[System.String,mscorlib,   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]   traceSourceNames,   System.Collections.Generic.IEnumerable 1[[Microsoft.Practices.EnterpriseLibrary.Logging.LogSource, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]] traceSources, Microsoft.Practices.EnterpriseLibrary.Logging.LogSource allEventsTraceSource, Microsoft.Practices.EnterpriseLibrary.Logging.LogSource notProcessedTraceSource, Microsoft.Practices.EnterpriseLibrary.Logging.LogSource errorsTraceSource, System.String defaultCategory, System.Boolean tracingEnabled, System.Boolean logWarningsWhenNoCategoriesMatch, System.Boolean revertImpersonation)\r\n Resolving Microsoft.Practices.EnterpriseLibrary.Logging.LogSource,General\r\n
Resolving parameter \"traceListeners\" of constructor Microsoft.Practices.EnterpriseLibrary.Logging.LogSource(System.String name, System.Collections.Generic.IEnumerable
1 [[System.Diagnostics.TraceListener,   系统,版本= 4.0.0.0,文化=中立,   PublicKeyToken = b77a5c561934e089]] traceListeners,   System.Diagnostics.SourceLevels级别,System.Boolean autoFlush,   Microsoft.Practices.EnterpriseLibrary.Logging.Instrumentation.ILoggingInstrumentationProvider   instrumentationProvider)\ r \ n解析   System.Diagnostics.TraceListener,事件日志跟踪侦听器\ r \ n“}”

4 个答案:

答案 0 :(得分:5)

我有同样的问题,这是由于我的配置文件中的错误。我引用了我的categorySources部分中的跟踪侦听器,这些侦听器在我的侦听器部分中不存在。我删除了类别和映射(我没有使用它们)然后它工作。我猜您可以在配置控制台中验证您的配置文件,然后它会告诉您问题所在。

答案 1 :(得分:1)

1 - 确保引用正确的DLL

  

Microsoft.Practices.EnterpriseLibrary.Logging

     

Microsoft.Practices.EnterpriseLibrary.Common

2 - 确保您的配置文件位于正确的位置(在同一个项目或参考项目中)

3 - 确保您的配置文件正确无误。使用企业库配置工具进行编辑,任何内容都不应为红色。尝试扩展所有跟踪侦听器,类别等。最常见的错误是其中一个特殊类别指向不存在的侦听器。

答案 2 :(得分:0)

我和ExceptionHanlder有类似的经历。在玩了介绍材料re:logging之后,我切换到直接使用Unity容器。

我基本上只是复制了帮助文件中的示例,并简单地想知道为什么它在Type Resolution上不起作用和出错;无法解决。

答案很简单。在切换到Unity容器之前,我只是“玩”了日志记录,但我使用/复制的示例使用了Logging和Exception Handling注入。

由于我没有“玩过:在5.0中使用异常处理,配置文件中没有这个条目,因此Unity无法解析。

解决方案:使用工具花5秒钟将ExceptionHandling块添加到配置文件中,我很高兴继续“玩”。

Unity需要配置文件中每个已解析块的条目,即使它们未命名/自定义。如果您正在使用示例代码进行学习,那么这一点非常明显,但很容易过度使用。

答案 3 :(得分:0)

我收到此错误,是因为数据库侦听器设置了不存在的连接字符串。

为帮助诊断,请注释掉侦听器行,然后再一次一个接一个地添加它们。