背景:我有一个使用 Microsoft 企业库 WCF 异常处理的 WCF 项目。
我们最近决定将我们的操作和数据合同转移到一个名为 comanynamespace.xxx.WCF.Utilities 的单独项目(.net 程序集)中。移动操作和数据契约后,我更改了 faultContractType 命名空间以反映新的程序集。
现在,当我在 VS2010 中启动 Web 服务时,出现以下错误:
尝试获取 ExceptionPolicyImpl 类型的实例时发生激活错误,键“WCF 异常屏蔽”
我尝试过:确保两个项目中存在相同的引用,并确保两个项目都在 .net 4(无客户端模式)下运行,等等。两者都没有帮助解决问题。
最后,我将 Service Fault 类复制回 Web Service 项目,并将 web.config 中的命名空间更改为指向本地命名空间:来自:
faultContractType="comanynamespace.xxx.WCF.Utilities.ServiceFault, comanynamespace.xxx.WCF.Utilities.Services"
到:
faultContractType="comanynamespace.xxx.Web.Services.ServiceFault, comanynamespace.xxx.Web.Services"
这确实解决了错误,但是,现在我必须在两个位置都有我的服务故障数据合同。
有谁知道为什么我无法通过 Microsoft EL WCF 异常处理在另一个 .net 程序集中使用服务故障(数据合同)?