我正在开发一个 WCF - WSIT (Metro) 集成项目,我希望允许 Java 客户端连接到持久服务。
持久服务 http://msdn.microsoft.com/en-us/library/bb410767(v=vs.90).aspx
持久服务需要 wsHttpContextBinding,这似乎工作正常。唯一的问题是 WSIT 客户端生成的代理似乎无法将 instanceId 分配给肥皂信封。是否有我不知道的配置设置,或者是否有拦截传出消息并附加 instanceId 的方法?
以下 SOAP 示例由 .NET 客户端生成。信封 WSIT 发送和这个之间的唯一区别是 WSIT 中缺少 Context 节点:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:r="http://schemas.xmlsoap.org/ws/2005/02/rm" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
...
<Context xmlns="http://schemas.microsoft.com/ws/2006/05/context">
<Property name="instanceId">{I want to set this Id}</Property>
</Context>
...
</s:Header>
<s:Body>
<IncreaseCounter xmlns="http://tempuri.org/"/>
</s:Body>
</s:Envelope>
我希望这是有道理的。问题不是 ws2007HttpBinding 或 wsHttpBinding 相关或 WCF 实例管理相关之类的;每次/通话、会话、单次。我需要 WSIT 方面的帮助,仅 Java 位。