【问题标题】:WCF duplex with DHCP?WCF双工与DHCP?
【发布时间】:2011-03-23 22:29:33
【问题描述】:

我正在运行的这个类似聊天的应用程序中使用双工 WCF 合同。 (显然不是真正的聊天,但出于思考的兴趣,您可以假设它足够相似)。

问题在于,许多讨论此合同的客户都在运行 dhcp,而我对此无能为力。

使用 dhcp 处理双工通信的最佳方法是什么?我找到了一个设置<compositeDuplex clientBaseAddress="Uri"/>,这意味着我可以在运行时更新这个值......似乎有点笨拙。

更新 我发现在我的 WCF 服务器日志中,部分问题在于它将主机名放在响应地址中。我在这里做错了什么?

谢谢

【问题讨论】:

  • 我使用 WCF 大约一个月,认为它是解决网络问题的神奇解决方案。我错了。我最终使用了 .NET (System.Net.Sockets) 中包含的 Sockets API;也省了不少麻烦,而且它是跨平台的(通过 Mono)。
  • DHCP 与您的问题有什么关系?
  • @John,问题似乎是服务器需要在客户端上打开一个端口,但是当客户端连接时,它只提供它的主机名,而不是它的完整 IP 地址来响应。
  • 希望主机名能够解析为正确的 IP 地址。同样,DHCP 与此无关。
  • @John 我认为你是对的。似乎是使用 DHCP 似乎是唯一导致我们遇到的特定故障的原因。一定是其他原因造成的。

标签: wcf wcf-binding


【解决方案1】:

坦率地说,你做错的第一件事是使用 DualHttpBinding 来做双工。整个绑定是一个巨大的杂物,很容易出现这样的问题(还有防火墙,哦上帝的防火墙)。

如果您要改用 net.tcp 之类的东西,那么客户端会与服务器建立一个双向连接,而不是需要两个连接,因此服务器不再关心客户端是否在 DHCP 上。

【讨论】:

  • 感谢您的坦诚。远离 http 传输完全解决了我们的问题。下一个问题是,由于我们使用自定义绑定,<tcpTransport> 元素不支持配置中的 maxReceivedMessageSize,因此更改自定义编码的 MessageEncodingBindingElment 构造函数解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
相关资源
最近更新 更多