【问题标题】:System.InvalidOperationException: The type Database cannot be constructedSystem.InvalidOperationException:无法构造类型数据库
【发布时间】:2011-09-29 15:57:04
【问题描述】:

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

场景;

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

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

* HelpManager.Tests.GetPage.GetPageById 故障 例外: System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: 尝试获取类型实例时发生激活错误 数据库,键“HelpManagement”(Fault Detail 等于 An ExceptionDetail,可能由 IncludeExceptionDetailInFaults=true,其值为: Microsoft.Practices.ServiceLocation.ActivationException:激活 尝试获取数据库类型的实例时发生错误,键 “帮助管理”----> Microsoft.Practices.Unity.ResolutionFailedException:解决 依赖失败,类型 = “Microsoft.Practices.EnterpriseLibrary.Data.Database”,名称 = “帮助管理”。异常发生时:解决时。例外 是: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);

Google 等人一直不开心。我检查了版本等,它们似乎都从 GAC 引用相同的 5.0.14,所以不确定问题是什么。

提前致谢

【问题讨论】:

  • 您的 nunit 项目是否有一个包含此配置信息的 app.config,并且该项目引用了模式和实践 DLL?
  • @sfuqua。是的(添加到测试中),但我为什么需要它。就 nunit 而言,我正在调用 WCF 服务,然后该服务调用数据库。 Nunit 不需要了解服务的内部工作原理,只需检查响应即可。
  • 显然我没有得到意图 - 对服务接口进行单元测试,而不仅仅是服务内部的代码。

标签: c# wcf nunit assemblies enterprise-library


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多