2

有些东西对我来说似乎很奇怪,我试图用反射器查看 WCF 内部,但请原谅我太难理解了:(。

当客户端 A 使用 wsDualHttpBinding 在服务器 B 上调用双工服务时,我在想客户端 A 在请求的标头中包含客户端基地址(回调的地址),如下所示

<a:ReplyTo>http://client.foo/29293-3287-2387-3291</a:ReplyTo>

.

OperationContext.Current.IncomingMessageHeaders.ReplyTo 返回空...

wsDualHttpBinding 如何知道客户端通道的地址????

有什么黑魔法吗?

解决方案

这是负责传输replyTo 地址的可靠会话。我们可以在 customBinding 中使用这些绑定元素来验证这一点

<reliableSession/>
<compositeDuplex/>
<oneWay></oneWay>
<textMessageEncoding></textMessageEncoding>
<httpTransport/>

删除reliableSession,您的服务不再有回调通道......

4

2 回答 2

2

我认为这些信息是在建立会话时通过消息传递的。如果您使用“fiddler”之类的工具来查看所有 http 流量,我的直觉是您会在初始会话设置消息中看到它。没有魔法,客户端必须告诉服务器“在哪里回调”。

于 2009-03-15T21:53:48.160 回答
0

当我使用套接字时,调用者的地址也可用 - 我的猜测是知道你需要回复哪个地址是网络通信的一个相当低级的功能......

于 2009-03-15T21:48:09.547 回答