【发布时间】:2011-02-19 12:19:00
【问题描述】:
我在测试我的 EHAB 实现时遇到以下错误:
ArgumentException - 事件日志名称必须由可打印字符组成,并且不能包含 、*、? 或空格
堆栈跟踪是:
{"激活时发生错误 试图获取类型的实例 ExceptionPolicyImpl,键“LogPolicy”“} System.Exception 堆栈跟踪:
堆栈跟踪“在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(类型 serviceType,字符串键)在 c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:line 53 在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance[TService](字符串 键入 c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:line 103 在 Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicy.GetExceptionPolicy(异常 异常,字符串策略名称)在 e:\Builds\EntLib\Latest\Source\Blocks\ExceptionHandling\Src\ExceptionHandling\ExceptionPolicy.cs:line 131 在 Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicy.HandleException(异常 exceptionToHandle,字符串策略名称) 在 e:\Builds\EntLib\Latest\Source\Blocks\ExceptionHandling\Src\ExceptionHandling\ExceptionPolicy.cs:line 55 在 Blackbox.Exception.ExceptionMain.LogException(异常 pException) 在 C:_Work_Black Box\Blackbox.Exception\ExceptionMain.vb:line 14 在 BlackBox.Business.BusinessMain.TestExceptionHandling() 在 C:_Work_Black Box\BlackBox.Business\BusinessMain.vb:line 16 在 Blackbox.Service.Service1.TestExceptionHandling() 在 C:_Work_Black Box\Blackbox.Service\Service.svc.vb:line 43" 字符串内部异常: InnerException {“解决的 依赖失败,类型 = "Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyImpl", 名称 = "日志策略"。发生异常 while:调用构造函数 Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener(System.String 源,System.String 日志, System.String machineName, Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.ILogFormatter 格式化程序)。例外是: ArgumentException - 事件日志名称 必须由可打印字符组成 并且不能包含 \、*、? 或空格
发生异常时,容器为:
解决 Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyImpl,LogPolicy 解析构造函数 Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyImpl(System.String policyName, System.Collections.Generic.IEnumerable`1[[Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyEntry, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling) 的参数“policyEntries” , 版本=5.0.414.0, 文化=中性, PublicKeyToken=31bf3856ad364e35]] policyEntries) 解决 Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyEntry,LogPolicy.All 异常 解析构造函数 Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyEntry(System.Type exceptionType, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.PostHandlingAction postHandlingAction, System.Collections.Generic.IEnumerable`1[[Microsoft.Practices.EnterpriseLibrary. ExceptionHandling.IExceptionHandler,Microsoft.Practices.EnterpriseLibrary.ExceptionHandling,版本=5.0.414.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35]] 处理程序,Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Instrumentation.IExceptionHandlingInstrumentationProvider instrumentationProvider) Resolving Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler,LogPolicy.All Exceptions.Logging Exception Handler(映射自 Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.IExceptionHandler, LogPolicy.All Exceptions.Logging Exception Handler) 解析构造函数 Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler 的参数“writer”(System.String logCategory,System.Int32 eventId,System.Diagnostics.TraceEventType 严重性,System.String 标题,System.Int32 优先级,System.Type formatterType , Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter 编写器) 解决 Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterImpl,LogWriter.__default__(映射自 Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter,(无)) 解析构造函数 Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterImpl 的参数“structureHolder”(Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterStructureHolder structureHolder, Microsoft.Practices.EnterpriseLibrary.Logging.Instrumentation.ILoggingInstrumentationProvider instrumentationProvider, Microsoft.Practices.EnterpriseLibrary.Logging.ILoggingUpdateCoordinator更新协调员) 解决 Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterStructureHolder,LogWriterStructureHolder.__default__(映射自 Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterStructureHolder,(无)) 解析构造函数 Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterStructureHolder 的参数“traceSources”(System.Collections.Generic.IEnumerable`1[[Microsoft.Practices.EnterpriseLibrary.Logging.Filters.ILogFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version= 5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]] 过滤器, 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,版本=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 错误TraceSource,System.String defaultCategor y, System.Boolean trackingEnabled, System.Boolean logWarningsWhenNoCategoriesMatch, System.Boolean revertImpersonation) 解决 Microsoft.Practices.EnterpriseLibrary.Logging.LogSource,General 解析构造函数 Microsoft.Practices.EnterpriseLibrary.Logging.LogSource 的参数“traceListeners”(System.String name, System.Collections.Generic.IEnumerable`1[[System.Diagnostics.TraceListener, System, Version=4.0.0.0, Culture=neutral ,PublicKeyToken=b77a5c561934e089]] traceListeners,System.Diagnostics.SourceLevels 级别,System.Boolean autoFlush,Microsoft.Practices.EnterpriseLibrary.Logging.Instrumentation.ILoggingInstrumentationProvider instrumentationProvider) 解析 Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.ReconfigurableTraceListenerWrapper,事件日志监听器(映射自 System.Diagnostics.TraceListener,事件日志监听器) 解析构造函数 Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.ReconfigurableTraceListenerWrapper 的参数“wrappedTraceListener”(System.Diagnostics.TraceListener WrappedTraceListener,Microsoft.Practices.EnterpriseLibrary.Logging.ILoggingUpdateCoordinator coordinator) 解决 Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener、事件日志监听器实现(映射自 System.Diagnostics.TraceListener、事件日志监听器实现) 调用构造函数 Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener(System.String source, System.String log, System.String machineName, Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.ILogFormatter 格式化程序) "} 系统异常
我的web.config如下:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
<section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
<listeners>
<add name="Event Log Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
source="Enterprise Library Logging" formatter="Text Formatter"
log="C:\Blackbox.log" machineName="." traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, Callstack" />
</listeners>
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
template="Timestamp: {timestamp}{newline}
Message: {message}{newline}
Category: {category}{newline}
Priority: {priority}{newline}
EventId: {eventid}{newline}
Severity: {severity}{newline}
Title:{title}{newline}
Machine: {localMachine}{newline}
App Domain: {localAppDomain}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Thread Name: {threadName}{newline}
Win32 ThreadId:{win32ThreadId}{newline}
Extended Properties: {dictionary({key} - {value}{newline})}"
name="Text Formatter" />
</formatters>
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="Event Log Listener" />
</listeners>
</add>
</categorySources>
<specialSources>
<allEvents switchValue="All" name="All Events" />
<notProcessed switchValue="All" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings">
<listeners>
<add name="Event Log Listener" />
</listeners>
</errors>
</specialSources>
</loggingConfiguration>
<exceptionHandling>
<exceptionPolicies>
<add name="LogPolicy">
<exceptionTypes>
<add name="All Exceptions" type="System.Exception, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
postHandlingAction="NotifyRethrow">
<exceptionHandlers>
<add name="Logging Exception Handler" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
logCategory="General" eventId="100" severity="Error" title="Enterprise Library Exception Handling"
formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling"
priority="0" />
</exceptionHandlers>
</add>
</exceptionTypes>
</add>
<add name="WcfExceptionShielding">
<exceptionTypes>
<add name="InvalidOperationException" type="System.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
postHandlingAction="ThrowNewException">
<exceptionHandlers>
<add type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF.FaultContractExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
exceptionMessageResourceType="" exceptionMessageResourceName="This is the message"
exceptionMessage="This is the exception" faultContractType="Blackbox.Service.WCFFault, Blackbox.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
name="Fault Contract Exception Handler">
<mappings>
<add source="{Guid}" name="Id" />
<add source="{Message}" name="MessageText" />
</mappings>
</add>
</exceptionHandlers>
</add>
</exceptionTypes>
</add>
</exceptionPolicies>
</exceptionHandling>
<connectionStrings>
<add name="CompassEntities" connectionString="metadata=~\bin\CompassModel.csdl|~\bin\CompassModel.ssdl|~\bin\CompassModel.msl;provider=Devart.Data.Oracle;provider connection string="User Id=foo;Password=foo;Server=foo64mo;Home=OraClient11g_home1;Persist Security Info=True""
providerName="System.Data.EntityClient" />
<add name="BlackboxEntities" connectionString="metadata=~\bin\BlackboxModel.csdl|~\bin\BlackboxModel.ssdl|~\bin\BlackboxModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=sqldev1\cps;Initial Catalog=FundServ;Integrated Security=True;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
我的代码如下:
Public Shared Function LogException(ByVal pException As System.Exception) As Boolean
Return ExceptionPolicy.HandleException(pException, "LogPolicy")
End Function
感谢任何帮助。
【问题讨论】:
标签: logging exception-handling enterprise-library