我使用WCF作为java Web服务的客户端。我无法控制服务器端。
在我从Web服务获得的响应中,soap头中的第一个元素上没有xmlns属性。因为这个WCF返回null作为Web服务调用的结果。
除了丢失的xmlns之外,响应是完美的,如果我使用fiddler添加xmlns,那么一切都按预期工作。我不太了解SOAP知道是否真的需要xmlns属性。
有没有办法避免这个问题,或者让WCF忽略丢失的xmlns属性,或者甚至是一个钩子,它允许我在响应WCF之前手动处理它?</ p>
答案 0 :(得分:2)
这似乎是一个非常古老的问题,所以我不确定你是否曾经解决这个问题。如果您正在使用WCF客户端来获取Java Axis服务,您会发现需要习惯使用MessageInspectors来覆盖请求和响应的行为。
使用AfterReceiveReply方法,您应该能够copy the original message并更改标题。另请查看Step 5 from this MSDN article。
我无法直接在此方法中更改响应标头,因为它们是只读的,因此复制然后用修改后的版本替换回复是我能想到的唯一方法来纠正缺少的命名空间。