【发布时间】: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