WCF客户端 - 如何处理或忽略MustUnderstand头元素?

Mar*_*lar 6 wcf ws-security jboss web-services wcf-binding

我正在编写一个WCF使用WS-Security来使用非.Net Web服务的客户端.服务的响应包含一个mustUnderstand设置为true的Security头.

使用ServiceModelListener,我确实看到从服务返回的实际数据.但是,WCF客户端失败,因为它没有处理Security头.

<env:Header>
<wsse:Security env:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Timestamp wsu:Id="timestamp">
<wsu:Created>2012-03-28T13:43:54.474Z</wsu:Created>
<wsu:Expires>2012-03-28T13:48:54.474Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</env:Header>
Run Code Online (Sandbox Code Playgroud)

WCF客户端错误消息:

来自命名空间" http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd " 的标题"安全性" 未被此消息的收件人理解,导致消息无法处理.此错误通常表示此消息的发送方已启用接收方无法处理的通信协议.请确保客户端绑定的配置与服务的绑定一致.

我的WCF客户端不需要任何时间戳信息.是否有一种简单的方法来处理例程?我已经尝试过扩展Response类并添加[MessageHeader]属性.

编辑:

问另一种方法:如何实现一个WCF接受标记为必须理解的自定义标题元素的客户端?

小智 1

WS-Security 有不同的标准。更改客户端的绑定可能是有意义的,因为 basicHttpBinding 和 wsHttpBindings 使用不同的安全标准。