5

我们将 Enterprise Library 4.1 异常处理应用程序块的 ExceptionShielding 功能与自定义 RoleProvider 与我们的 WCF 服务结合使用。

当 RoleProvider 确定用户不在角色中并从 IsInRole 方法返回 false 时,将发生以下异常:

    System.ServiceModel.Security.MessageSecurityException,System.ServiceModel,版本=3.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089
    没有为具有“{XXX}”操作的消息指定签名消息部分。

WCF 然后中止RequestContext服务操作,客户端超时。

我尝试了此链接中提到的解决方案,但没有成功:

http://www.codeplex.com/entlib/Thread/View.aspx?ThreadId=25236

我们还System.Exception从 EHAB 策略中删除了异常类型,实际上让 EHAB 对此策略没有任何作用,这没有任何效果。

唯一阻止此异常的方法是注释掉ExceptionShielding服务实现上的属性。

对此问题的任何修复将不胜感激。

4

1 回答 1

2

我花了好几个小时试图找出原因。我已经在这里发布了我的答案。

基本上,您需要定义故障操作并将其设置为相同的命名空间。

于 2011-03-09T23:34:58.463 回答