我有一个项目结构,我们有一个参考项目(简称为参考项目),它可以进行日志记录。所以我在RefProject中调用一个方法,并对Enterprise Library执行WriteLog调用,一切都可以与现有的Enterprise Library tracelisteners一起使用。所有企业库dll都在RefProject项目中引用。一切正常,配置在Web项目的web.config(此处称为WebProject)中完成(WebProject引用RefProject,但不引用EntLib dll)。
以下是在web.config中配置的标准侦听器的示例。
<add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
fileName="C:\Logfiles\logger.log"
footer="" formatter="Text Formatter" header="" rollFileExistsBehavior="Increment"
rollInterval="Midnight" filter="Verbose" />
现在,我在一个单独的日志记录项目中创建了一个自定义tracelistener(此处称为Logging项目)。如果WebProject引用了Logging项目,那么一切正常,并且tracelistener按预期工作。如果RefProject引用了Logging项目,那么当它尝试写入日志文件时发现它无法找到类型时会出现异常。
理想情况下,我不希望所有客户端应用程序都需要保留此引用。我想这一切都由RefProject照顾。 RefProject已经使用其他EntLib默认侦听器来处理这个问题。我不明白为什么当所有其他EntLib组件由RefProject而不是WebProject直接引用时,WebProject需要将这个新项目引用到logger。
有什么想法吗?
<add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
databaseConfig="ExceptionsDatabase" writeLogStoredProcName="WriteLog"
addCategoryStoredProcName="AddCategory" type="Logging.CustomExceptionTrackerTraceListener, GB.Logging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
traceOutputOptions="LogicalOperationStack, Callstack" name="Database Exception Tracking Listener"
formatter="Text Formatter" filter="Error"/>
答案 0 :(得分:0)
尝试kill de WebServer进程,清理并重建我们的项目,然后再次运行F5。