2012-12-10 45 views
8

我正在创建一个WCF Web服务,其请求/响应应该只是签名。 为此,在ServiceContract特性我已经设置为什么WCF SoapFault响应在某些情况下被加密?

ProtectionLevel = ProtectionLevel.Sign 

这工作正常。

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

  • 相关应用
  • 相关的WS-Addressing(如邮件ID丢失)

为此,我现在用的是正常的处理SoafFaults的方法:创建使用MessageFault.CreateFault创建Message实例的IErrorHandler。

几乎所有的返回SoapFaults未加密(这是确定对我来说), 我的问题是,为什么只是那些行动=“http://www.w3.org/2005/08/addressing/fault”或“http://www.w3.org/2005/08/addressing/soap/fault”是否加密?

+0

你怎么知道它被加密?你能提供样本回应吗? – esskar

+0

我知道是加密的,因为我用SvcTraceViewer查看它(在客户端)。 – csg

+0

@csg你找到了原因吗?我现在正在遇到一模一样的问题。 –

回答

0

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

如果选择绑定,允许安全并且没有合同上的任何地方设置 ProtectionLevel属性,所有的应用程序 数据进行加密和签名。

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

+0

保护级别在合同级别设置为:[ServiceContract(ProtectionLevel = ProtectionLevel.Sign)] – csg

相关问题