我在某个地址上发布了WCF服务,我希望通过在Visual Studio中生成的代理与它进行通信。
我希望来自我的代理的消息与特定的TCP源端口一起发送,但它显然会在每次调用时分配一个随机端口。
问题是:我有两台主机A和B正在运行WCF服务(每台主机上相同),主机A的地址为AdA和端口PA,主机B的地址为AdB,端口为PB 。主机A向主机B发送消息。主机B在消息之后执行一些内部操作,然后向主机A发送消息。问题是当主机A在B上调用web方法时,它发送带有随机src的TCP消息端口,以及不匹配A托管服务的端口的端口,因此不会在A上调用web方法,因为WCF分配的源端口与服务发布的端口不匹配。
到目前为止,我一直在使用BasicHttpBinding。
我怎样才能做到这一点?
感谢。
答案 0 :(得分:0)
netPeerTcpBinding允许您指定出站端口号。
答案 1 :(得分:0)
问题是,当主机A在B上调用web方法时,它会发送一个 带有随机src端口的TCP消息,以及与之不匹配的TCP消息 A托管服务的端口,因此web方法不是 在A上调用,因为WCF分配的源端口不匹配 服务发布的端口。
没有理由因为它收到来自其他网络服务的回复而应该调用A的Web方法。您必须明确调用该服务。如果您希望在对A调用B的响应中调用A,则服务B中的代码必须进行该调用。虽然如果你有两种方法可以相互调用,那就只是来回,所以你需要一个退出条件。也许如果你提供了关于你想要完成什么的更多细节,我可以提供更多的建议。
答案 2 :(得分:-1)
我认为不可能为任何类型的网络通信分配源端口,因为它必须是唯一的。
源端口是TCP / IP分配给的下一个可用号码 客户。这个分配的号码是网络地址转换的方式 method确定将响应发送回的用户(请参阅NAT)。 虽然可以同时使用相同的客户编号 成千上万的组织,每个TCP / IP网络都跟踪自己的 分配的号码仅供该网络使用。的组合 端口号和IP地址称为“套接字”。