对我来说似乎非常奇怪,我试图用反射器查看WCF,但请原谅我这太难理解了:(。
当客户端A使用wsDualHttpBinding调用服务器B上的双工服务时,我认为客户端A在请求的标头中包含客户端基地址(回调的地址),如下所示
<a:ReplyTo>http://client.foo/29293-3287-2387-3291</a:ReplyTo>
但是
OperationContext.Current.IncomingMessageHeaders.ReplyTo
返回null ...
wsDualHttpBinding如何知道客户端通道的地址????
是否有一些黑魔法或什么?
解决方案
这是负责传输replyTo地址的可靠会话。我们可以在customBinding
中使用这些绑定元素来验证这一点<reliableSession/>
<compositeDuplex/>
<oneWay></oneWay>
<textMessageEncoding></textMessageEncoding>
<httpTransport/>
删除reliableSession,您的服务不再具有回调频道......
答案 0 :(得分:2)
我认为这些信息在建立会话时通过消息传递。如果你使用像“fiddler”这样的工具来观看所有的http流量,我的预感就是你会在初始会话设置消息中看到它。没有魔力,客户必须告诉服务器'在哪里回电'。
答案 1 :(得分:0)
当我使用套接字时,呼叫者的地址也可用 - 我的猜测是知道你需要回复哪个地址是一个相当低级别的网络通信功能......