WCF - 不使用 IIS 的远程服务 - 基地址?
-
22-09-2019 - |
题
我正在尝试了解 WCF 服务的寻址。
我们有一个客户端-服务器设置,其中服务器偶尔(可能每天一次)需要将数据推送到每个客户端。我希望在 NT 服务中托管的每个客户端上都有一个轻量级 WCF 侦听器服务来接收该数据。我们已经有了这样一个 NT 服务设置,托管一些用于其他任务的本地 WCF 服务,因此其开销是最小的。
由于服务器上现有的遗留代码,我相信该服务需要公开为 ASMX 并使用 basicHttpBinding
以允许其连接。
每个客户端都由用户在服务器上注册(他们需要单独配置它们),因此发现不是问题。
我的问题是,寻址是如何工作的?我想象用户在服务器上以表单输入客户端的地址
http://0.0.0.0/MyService
甚至
http://hostname/MyService
如果是这样,如何在 App.config 中配置客户端服务?我用吗 localhost
?
如果不是,那么向服务器公开服务的推荐方式是什么?
笔记:
- 我不想在 IIS 中托管,因为这对客户端所需的硬件增加了额外的要求。
- 客户端几乎肯定位于 LAN 上,而不是公共互联网上
解决方案
您可以像这样配置服务的基地址:
<system.serviceModel>
<services>
<service name="Ns.FooService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:9999" />
</baseAddresses>
</host>
<endpoint
address="/foo"
binding="basicHttpBinding"
contract="Ns.IFooContract" />
</service>
</services>
</system.serviceModel>
然后您的服务可以通过 http://servename:9999/foo
. 。你可以看看 本文 了解更多信息。
不隶属于 StackOverflow