尝试获取数据库类型的实例时出现激活错误,键“”< – 空白
我正在尝试使用Enterprise Library 5.0并在我的BL上进行一些unit testing,我是否需要在DL或Test项目上安装app.config?
注意:我的web项目上的web.config上已经有配置设置。
我如何使用DAAB:
private static Database db = DatabaseFactory.CreateDatabase(); db.ExecuteNonQuery("spInsertSalesman", salesman.Fullname);
我在DL上的app.config:
添加其他原因。
我有一个引用Enterprise Library 5.0.xxxxx的VS2010解决方案/ csproj。
但是,csproj被设置为“Target 3.5 Framework”。 因此,我要么需要定位4.0框架,要么“向下”到3.5版本的企业库。
我能够将目标框架更新到4.0,然后错误就消失了。
您可以通过以下方法找出代码编译的框架版本:(Powershell mini script)
[System.Reflection.Assembly]::LoadFrom("c:\somefolder\Any_Of_The_Practices.dll").ImageRuntimeVersion
如果你得到v2.0.50727,那么你将无法在Framework 4.0(或更高版本)下运行。
编辑:
由于没有定义正确的“DbProviderFactories”,我也遇到了这个错误。 我发布了一个我在这个URL上找到的MySql配置:(我正在复制它,以防URL将来死掉)
(来自http://searchcode.com/codesearch/view/14385662 )
最后:
一旦我收到此错误,因为我没有ConnectionString(在配置文件中),其名称与defaultDatabase值相同。 阿卡,简单的“麻木头骨”错误。
如果您愿意,可以将此安全阀代码放入(在创建数据库之前)。
DatabaseSettings dataConfig = (DatabaseSettings)ConfigurationManager.GetSection("dataConfiguration"); string configDefaultDatabase = string.Empty; if (null != dataConfig) { configDefaultDatabase = dataConfig.DefaultDatabase; if (!String.IsNullOrEmpty(configDefaultDatabase)) { ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings; if (null == connections[configDefaultDatabase]) { throw new ArgumentOutOfRangeException( string.Format( "Your dataConfiguration (DefaultDatabase) does not match any of your connection strings. DefaultDatabase='{0}'.", configDefaultDatabase)); } } }
这是由于GAC dll(程序集中的Dll)与应用程序引用的dll之间的dll不匹配。
从程序集中删除dll并尝试运行。
- 开始 – >运行
- 键入程序集
- 删除发生激活错误的DLL。
- 重置IIS
希望它能解决你的问题。
我正在引用错误的.dll副本。 它现在有效。
我有同样的问题,我通过将EntLib从5.0更改为3.1来解决它
由于类库可以有app.config文件。 当您使用EntLib 5.0并希望访问类libarry中的连接字符串时,它实际上没有用。 因此,您需要将上面的配置添加到解决方案中使用的所有web.config文件中。 例如,如果您有UI层,则Business(类库)和UI层之间的WCF层和Business层位于WCF服务和DAL(类库)之间。
在这里,每个UI层和WCF服务层都有一个web.config文件,因此这两个web.config文件应该包含上述设置。
确保您的服务器安装了MySQL .net连接器。 在安装连接器之前,我遇到了同样的错误。 http://www.mysql.com/products/connector/
通过在CreateDatabase调用中显式指定连接字符串的名称,我能够在我的DLL项目中修复此错误,如下所示:
Database db = DatabaseFactory.CreateDatabase("DBTEST");
代替
Database db = DatabaseFactory.CreateDatabase();