System.InvalidOperationException:无法构造数据库类型

时间:2011-09-29 15:57:04

标签: c# wcf nunit assemblies enterprise-library

我一直在考虑将一些旧代码重构为基于net 4.0的新WCF服务,并且对于应该是一个简单的练习有点困难!

场景;

通过HTTP托管的WCF服务,实现我们的ServiceContract,它连接到本地Sql Server。

尝试针对服务调用运行简单的NUnit测试时,出现以下错误;

  

* HelpManager.Tests.GetPage.GetPageById错误   例外:   System.ServiceModel.FaultException`1 [System.ServiceModel.ExceptionDetail]:   尝试获取类型实例时发生激活错误   数据库,关键“帮助管理”(故障细节等于安   ExceptionDetail,可能由。创建   IncludeExceptionDetailInFaults = true,其值为:   Microsoft.Practices.ServiceLocation.ActivationException:激活   尝试获取Database,key类型的实例时发生错误   “帮助管理”---->   Microsoft.Practices.Unity.ResolutionFailedException:解析   依赖失败,type =   “Microsoft.Practices.EnterpriseLibrary.Data.Database”,name =   “HelpManagement”。在解决时发生异常:例外   是:InvalidOperationException - 数据库不能是   建造。您必须配置容器以提供此值。    - - - - - - - - - - - - - - - - - - - - - - - - 当时的   例外,容器是:

     

解决   Microsoft.Practices.EnterpriseLibrary.Data.Database,HelpManagement   ----> System.InvalidOperationException:类型数据库不能   建造。您必须配置容器以提供此值   在   Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.GuardTypeIsNonPrimiti ...)。

我们的(非常标准的)WCF web.config,看起来像;

 
<configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>
</configSections>

<dataConfiguration defaultDatabase="HelpManagement"/>

<connectionStrings>
    <add name="HelpManagement" connectionString="server=(local);database=ieq;uid=;pwd=" providerName="System.Data.SqlClient"/>
</connectionStrings>

以及用于调用它的代码示例;

private const string DB_HelpManagement = "HelpManagement";
var db = DatabaseFactory.CreateDatabase(DB_HelpManagement);
谷歌等人并不好玩。我已检查过版本等,它们似乎都是从GAC引用相同的5.0.14,所以不确定问题是什么。

提前致谢

2 个答案:

答案 0 :(得分:2)

我想知道Microsoft.Practices.ObjectBuilder.dll和Microsoft.Practices.EnterpriseLibrary.Common - 它们是在WCF项目中引用的吗?

答案 1 :(得分:0)

听起来可能是你的配置。您是否在配置文件中指定了dataConfiguration defaultDatabase值(例如web.config)?