为什么在某些情况下WCF SoapFault响应会被加密?

时间:2012-12-10 10:51:41

标签: wcf web-services soapfault

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

ProtectionLevel = ProtectionLevel.Sign

没问题。

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

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

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

几乎所有返回的SoapFault都没有加密(这对我来说还可以), 我的问题是为什么那些行动=“http://www.w3.org/2005/08/addressing/fault”或“http://www.w3.org/2005/08/addressing/soap/fault”被加密了?

1 个答案:

答案 0 :(得分:0)

结帐http://msdn.microsoft.com/en-us/library/aa347791.aspxhttp://msdn.microsoft.com/en-us/library/system.servicemodel.faultcontractattribute.aspx。 它说明了

  

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

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