宏伟的设计如下:
非常简单,是吗?我过去常常使用自己的基于UDP广播的发现机制来构建这类东西。
但现在我觉得自己很酷,很时髦,并且在Ad Hoc模式中使用常规WCF Discovery。它的工作原理!谁能说出来? : - )
但不完全。
正如我前面提到的here和there,该发现从服务的配置返回硬编码的URL。也就是说,如果服务的配置文件中有<baseAddresses><add baseAddress="net.tcp://localhost:1234/My/Service" /></baseAddresses>
,那么这正是我将从发现客户端获得的 - 包括“localhost”部分。
毋庸置疑,如果我尝试使用该网址调用该服务,结果并不令人兴奋。
所以问题是:如何让发现客户端为我提供可用的URL而不是localhost-ish垃圾?
为了节省每个人的时间,一些不起作用的想法:
换句话说,我不需要调整服务,而是让发现客户端给我发现响应来自的地址。
答案 0 :(得分:13)
您应该可以通过将localhost
替换为通配符来解决此问题:
<baseAddresses><add baseAddress="net.tcp://*:1234/My/Service" /></baseAddresses>
答案 1 :(得分:3)
答案 2 :(得分:0)
除了通配符之外的另一个选项是使用机器的DNS可解析主机名而不是localhost。