代码之家  ›  专栏  ›  技术社区  ›  Mark Pim

不使用IIS基地址的远程服务?

  •  0
  • Mark Pim  · 技术社区  · 15 年前

    我正在努力解决WCF服务的寻址问题。

    我们有一个客户机-服务器设置,服务器偶尔(可能一天一次)需要将数据推送到每个客户机。我希望在NT服务中托管的每个客户机上都有一个轻量级的WCF侦听器服务来接收这些数据。我们已经有了这样一个NT服务安装程序,为其他任务托管一些本地WCF服务,因此开销很小。

    由于服务器上现有的遗留代码,我认为需要将服务公开为asmx并使用 basicHttpBinding 允许它连接。

    每个客户机都是由用户在服务器上注册的(他们需要单独配置它们),因此发现不是问题。

    我的问题是,寻址是如何工作的?我想象用户以表单的形式在服务器上输入客户机地址

    http://0.0.0.0/MyService
    

    甚至

    http://hostname/MyService
    

    如果是,如何在app.config中配置客户端服务?我是否使用 localhost ?

    如果不是,那么将服务公开给服务器的推荐方法是什么?

    注:

    • 我不想在IIS中托管,因为这会给客户端所需的硬件增加额外的需求。
    • 客户机几乎肯定位于局域网上,而不是通过公共互联网。
    1 回复  |  直到 15 年前
        1
  •  1
  •   Darin Dimitrov    15 年前

    您可以这样配置服务的基址:

    <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 . 你可以看看 this article 更多信息。