我正在创建一个WCF Web服务,其请求/响应应该只签名。 为此,在ServiceContract属性上设置了
ProtectionLevel = ProtectionLevel.Sign
没问题。
由于要求,一些SoapFaults应该从服务中抛出;两种类型的SoapFaults:
为此,我使用处理SoafFaults的常规方法:创建一个IErrorHandler,其中使用MessageFault.CreateFault创建Message实例。
几乎所有返回的SoapFault都没有加密(这对我来说还可以), 我的问题是为什么那些行动=“http://www.w3.org/2005/08/addressing/fault”或“http://www.w3.org/2005/08/addressing/soap/fault”被加密了?
答案 0 :(得分:0)
结帐http://msdn.microsoft.com/en-us/library/aa347791.aspx和http://msdn.microsoft.com/en-us/library/system.servicemodel.faultcontractattribute.aspx。 它说明了
如果选择启用安全性的绑定,则不设置 ProtectionLevel属性在合同的任何地方,所有应用程序 数据将被加密和签名。
我猜默认情况下的内置类型使用此行为。您可以通过查看实际抛出的异常来验证这一点。