WCF企业库异常处理在其他项目中的faultcontract类型时失败

时间:2012-11-16 14:53:16

标签: wcf .net-4.0 enterprise-library .net-assembly

背景:我有一个使用Microsoft Enterprise Library WCF异常处理的WCF项目。

我们最近决定将我们的运营和数据合同转移到一个名为comanynamespace.xxx.WCF.Utilities的单独项目(.net程序集)中。移动操作和数据协定后,我更改了faultContractType命名空间以反映新的程序集。

现在,当我在VS2010中启动Web服务时,出现以下错误:

尝试获取ExceptionPolicyImpl类型的实例时出现激活错误,键“WCF Exception Shielding”

我尝试过:确保两个项目中都存在相同的引用,并确保两个项目都在.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程序集中使用服务错误(数据协定)?

1 个答案:

答案 0 :(得分:1)

问题最终是将faultcontracttype的名称空间(第二部分)设置为

  

faultContractType =“companyname.xxx.WCF.Utilities.Services.ServiceFault,companyname.xxx.WCF.Utilities.Services”

而不是

  

faultContractType =“companyname.xxx.WCF.Utilities.Services.ServiceFault,companyname.xxx.WCF.Utilities”

companyname.xxx.WCF.Utilities是程序集的命名空间。