8

我正在创建一个 WCF Web 服务,其请求/响应应该只签名。为此,在我设置的 ServiceContract 属性上

ProtectionLevel = ProtectionLevel.Sign

这行得通。

由于要求,一些 SoapFaults 应该从服务中抛出;两种类型的 SoapFaults:

  • 申请相关
  • 与 WS-Addressing 相关(例如缺少 MessageID)

为此,我使用了处理 SoafFaults 的常规方法:创建一个 IErrorHandler,其中使用 MessageFault.CreateFault 创建一个 Message 实例。

几乎所有返回的 SoapFaults 都没有加密(这对我来说没问题),我的问题是为什么那些带有 action="http://www.w3.org/2005/08/addressing/fault" 或 " http:// www.w3.org/2005/08/addressing/soap/fault “被加密了吗?

4

1 回答 1

0

查看http://msdn.microsoft.com/en-us/library/aa347791.aspxhttp://msdn.microsoft.com/en-us/library/system.servicemodel.faultcontractattribute.aspx。它指出

如果您选择启用安全性的绑定并且未在合同的任何位置设置 ProtectionLevel 属性,则所有应用程序数据都将被加密和签名。

我猜默认情况下内置类型使用这种行为。您可以通过查看实际抛出的异常来验证这一点。

于 2013-01-29T14:37:14.487 回答