解决微软企业类库 EnterpriseLibrary 中 DatabaseFactory.CreateDatabase 失败问题

今天用 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>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值