【问题标题】:How to make endpoint address static while using wcf如何在使用 wcf 时使端点地址静态
【发布时间】:2015-10-13 07:22:26
【问题描述】:

我正在使用 wcf 服务托管一个 Web 应用程序。所以每当我添加一个新的 serviceReference 时,下面的代码就会出现在我的 web.config 文件中,这是显而易见的

  <endpoint address="http://localhost:8426/WcfService1/Service1.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
    contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" />

现在我的问题是每次添加 serviceReference 端点地址时都会添加。我想将该端点地址设为静态。存储在 web.Config 中的某个位置。

更改背后的想法是,当我要在不同的服务器上托管时,可能会有超过 100 个 serviceReference。所以每次我都不能改变 100 个端点地址。那么如何使其成为静态并访问它。

【问题讨论】:

    标签: c# asp.net wcf web-config


    【解决方案1】:

    在 ISS 上托管 WCF 服务后,它将托管在静态地址上。类似“www.example.com/WcfService1/Service1.svc”的东西。现在,您要使用此服务的 Web 应用程序(您拥有服务引用的位置)将拥有带有客户端地址的 web.config。您必须手动替换它。如果您担心在多个服务中更新它,请查看构建部署配置。构建部署技术可以根据您在构建中部署的环境来替换配置文件中的这些配置值。

    http://www.asp.net/web-forms/overview/deployment/configuring-team-foundation-server-for-web-deployment/creating-a-build-definition-that-supports-deployment

    【讨论】:

      【解决方案2】:

      一旦为 localhost 生成了服务引用,您不需要在部署后重新生成它们。您只需要更改 web.config 文件中的端点地址。对于服务,它们仍然可以是 localhost,但对于服务使用者(即 web.config 中的 client 部分),它们应该包含真实可访问的主机名。

      如果您的所有 wcf 服务都是公共的并且应该从外部可见,那么根据您的部署配置,它们将通过主机名可用。你应该听从Shetty的建议。

      但是您可以使用不同的构建/部署系统,其中可以使用某种配置文件模板,并且在部署期间主机名将替换为真实主机名。

      如果您的所有服务都应该仅由公共的 Web 应用程序使用,并且所有服务都不应该从外部获得,那么为sales.servise.company.int@987654323 之类的服务使用自定义 DNS 名称是有意义的@ 并将它们硬编码到 web.config 文件中。 在开发过程中,您只需在本地 /etc/hosts 文件中指定这些主机名,在生产版本中您可以执行相同操作(在 Web 应用程序机器上调整 hosts 文件)或/并在您的私有 DNS 服务器和负载均衡器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-27
        • 1970-01-01
        • 1970-01-01
        • 2020-10-21
        • 2012-08-25
        • 2011-07-06
        • 2011-02-11
        相关资源
        最近更新 更多