尝试获取数据库类型的实例时出现激活错误,键“”< – 空白

我正在尝试使用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并尝试运行。

  1. 开始 – >运行
  2. 键入程序集
  3. 删除发生激活错误的DLL。
  4. 重置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();