今天用 netTiers 生成了一套代码,用的时候发现如果使用 DatabaseFactory.CreateDatabase() 失败,抛出以下异常 Activation error occured while trying to get instance of type Database, key "" 在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key) 在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance[TService](String key) 在 Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.InnerCreateDatabase(String name) 原始 app.config <?xml version="1.0"?> <configuration> <configSections> <section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common" /> </configSections> <enterpriseLibrary.ConfigurationSource selectedSource="File Configuration Source"> <sources> <add name="File Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common" filePath="entlib.config" /> </sources> </enterpriseLibrary.ConfigurationSource> <connectionStrings> <add name="netTiersConnectionString" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=testDb;Persist Security Info=True;User ID=sa;Password=******" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration> entlib.config <configuration> <configSections> <section name="securityConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Configuration.SecuritySettings, Microsoft.Practices.EnterpriseLibrary.Security" /> <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging" /> <section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling" /> <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" /> <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching" /> </configSections> <dataConfiguration defaultDatabase="netTiersConnectionString"> </dataConfiguration> <securityConfiguration defaultAuthorizationInstance="NetTiers.RuleProvider" defaultSecurityCacheInstance=""> ..... </securityConfiguration> <loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="General" logWarningsWhenNoCategoriesMatch="true"> .... </loggingConfiguration> <exceptionHandling> .... </exceptionHandling> <cachingConfiguration defaultCacheManager="YGame.Server.Entities.EntityCache"> .... </cachingConfiguration> </configuration> 调整后,把 entlib.config 内容全部搬到 app.config ,问题就解决了。 <?xml version="1.0"?> <configuration> <configSections> <section name="securityConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Configuration.SecuritySettings, Microsoft.Practices.EnterpriseLibrary.Security" /> <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging" /> <section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling" /> <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" /> <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching" /> </configSections> <dataConfiguration defaultDatabase="netTiersConnectionString"> </dataConfiguration> <securityConfiguration defaultAuthorizationInstance="NetTiers.RuleProvider" defaultSecurityCacheInstance=""> ..... </securityConfiguration> <loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="General" logWarningsWhenNoCategoriesMatch="true"> .... </loggingConfiguration> <exceptionHandling> .... </exceptionHandling> <cachingConfiguration defaultCacheManager="YGame.Server.Entities.EntityCache"> .... </cachingConfiguration> <connectionStrings> <add name="netTiersConnectionString" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=testDb;Persist Security Info=True;User ID=sa;Password=*****" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>
解决微软企业类库 EnterpriseLibrary 中 DatabaseFactory.CreateDatabase 失败问题
最新推荐文章于 2020-10-20 09:41:25 发布