【问题标题】:WCF Enterprise Library ExceptionHandling failing when faultcontracttype in other project当其他项目中的faultcontracttype时WCF企业库异常处理失败
【发布时间】:2012-11-16 14:53:15
【问题描述】:

背景:我有一个使用 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 程序集中使用服务故障(数据协定)?

【问题讨论】:

  • 在顶部您说您的项目是“xxx.Utilities”,但在您的配置中您将其称为“xxx.WCF.Utilities”。这是一个错字还是这可能是问题所在?
  • Mike,这是一个错字,但如果您查看下面的我的解决方案,您对命名空间的猜测是正确的,为什么会发生激活错误。谢谢!

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


【解决方案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 是程序集的命名空间。

【讨论】:

  • 您应该将此标记为答案,以便其他人知道它有效。
  • 会在我被允许的 2 天内完成。 :D
猜你喜欢
  • 1970-01-01
  • 2012-12-27
  • 2011-02-27
  • 2011-02-19
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多