gpt4 book ai didi

wcf - 在不同的服务器上使用什么作为 WCF net.tcp host baseAddress?

转载 作者:行者123 更新时间:2023-12-01 15:14:33 27 4
gpt4 key购买 nike

在我的 App.config 中,我指定了这个基地址(“jerrycan”是我计算机的名称):

<service behaviorConfiguration="helloWorldServiceBehavior" name="OpdService.OpdService">
<endpoint address="/service" binding="netTcpBinding" bindingConfiguration="NewBinding0"
name="MainEndPoint" contract="OpdService.IOpdService">
<identity>
<dns value="jerrycan" />
</identity>
</endpoint>
<endpoint kind="udpDiscoveryEndpoint" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://jerrycan:8000" />
<add baseAddress="http://jerrycan/service" />
</baseAddresses>
<timeouts openTimeout="00:00:15" />
</host>
</service>

一切正常,直到我在另一台计算机上运行服务 — 客户端可以通过 UDP 发现找到服务,但无法连接,因为服务继续发送旧地址。当我将“jerrycan”更改为“localhost”时,只有本地客户端能够连接到服务(但在任何计算机上)。其他计算机上的任何客户端都尝试连接到“localhost”但没有成功。

那么如果我希望能够在不同的计算机上运行服务而无需重新编译,我应该使用什么作为主机地址呢?我应该在每台计算机的配置文件中的某处存储地址,还是应该在运行时更改地址?我想,我在这里遗漏了一些简单而基本的东西。

或者也许我应该使用 localhost(在许多 wcf 示例中),这是我的客户端连接代码带来了问题:

EndpointAddress endpointAddress = findResponse.Endpoints[0].Address;
OpdChannelFactory = new DuplexChannelFactory<OpdServiceReference.IOpdService>(CallbackHandler,
new NetTcpBinding("MainEndPoint"), endpointAddress);

同样,当我使用“localhost”作为基地址时,“localhost”在 findResponse 中作为端点地址出现。

编辑:

似乎我在此处找到了解决方案:http://btw-blog.blogspot.com/2011/02/dynamic-base-address-for-wcf-service.html

重点是用 * 符号(通配符)替换基地址中的主机名。它将在运行时更改为实际主机名。

尚未测试所有内容,但看起来确实有效。

最佳答案

看来我在这里找到了解决方案:http://btw-blog.blogspot.com/2011/02/dynamic-base-address-for-wcf-service.html

重点是用“*”符号(通配符)替换基地址中的主机名。它将在运行时更改为实际主机名。

经过测试,效果很好。

关于wcf - 在不同的服务器上使用什么作为 WCF net.tcp host baseAddress?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com