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

为什么WCF SoapFault响应在某些情况下是加密的?,wcf,web-services,soapfault,Wcf,Web Services,Soapfault,我正在创建一个WCF Web服务,它的请求/响应应该只被签名。 为此,我在ServiceContract属性上设置了 ProtectionLevel = ProtectionLevel.Sign 这样行 由于需求,一些SOAPFault应该从服务中抛出;两种类型的SOAPFault: 与应用程序相关 与WS-Addressing相关(例如缺少MessageID) 为此,我使用处理SoAffault的常规方法:创建一个IErrorHandler,其中使用MessageFault.Create

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

ProtectionLevel = ProtectionLevel.Sign
这样行

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

  • 与应用程序相关
  • 与WS-Addressing相关(例如缺少MessageID)
为此,我使用处理SoAffault的常规方法:创建一个IErrorHandler,其中使用MessageFault.CreateFault创建消息实例

几乎所有返回的SoapFaults都没有加密(这对我来说没问题), 我的问题是为什么那些采取行动的人=”http://www.w3.org/2005/08/addressing/fault“或”“已加密?

请签出并重试。 它说

如果选择了启用安全性的绑定,但未设置 合同上任何位置的ProtectionLevel属性,所有应用程序 数据将被加密和签名


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

您如何知道它是加密的?您能提供一个示例响应吗?我知道它是加密的,因为我使用SvcTraceViewer(客户端)查看它。@csg您找到原因了吗?我遇到了完全相同的问题。保护级别设置为具有:[ServiceContract(ProtectionLevel=ProtectionLevel.Sign)]的合同级别