【问题标题】:How to host multiple apps on one Azure Web App如何在一个 Azure Web 应用上托管多个应用
【发布时间】:2019-03-30 12:23:48
【问题描述】:

我构建了应用程序(ASP .NET Core MVC + Angular)。我需要为三个不同的客户部署这个应用程序。此时每个客户都有自己的数据库。是否可以在一个 azure Web 应用程序中拥有多个站点(如 mysite.com/a、mysite.com/b 和 mysite.com/c),并且每个站点都有自己的连接字符串?或者我应该使用路径 1 customer-1 web app 吗?天呐

【问题讨论】:

    标签: asp.net angular azure model-view-controller web-applications


    【解决方案1】:

    我不确定是否有多个站点作为子目录。

    您可以做的是设置 1 个标准应用服务计划并在该计划中设置多个应用服务,并使用子域指向这些应用服务(CustomerA.mysite.com、CustomerB.mysite.com)。在单个应用服务计划中设置多个应用服务无需额外费用。

    这有几个优点。您可以使用 Azure 的应用程序设置管理,您可以使用部署槽,并且您可以一次更新每个客户的生产环境 1 允许您有 1 个客户 Beta 测试,而其他人正在运行稳定的代码。

    【讨论】:

      【解决方案2】:

      虽然可能有一种方法可以将您的应用程序部署到同一个应用服务。它肯定会涉及编辑 Kudu 构建脚本。我不知道那里的很多细节让它工作。

      但是,如果您坚持为每个客户使用 1 个应用服务,您应该能够在每个应用服务中设置一个环境变量,并为每个客户提供一个数据库连接字符串。通过这样做,您可以在代码中引用该环境变量,因此您不必为每个客户使用不同的数据库连接字符串重新编译。若要在 Azure 应用服务中创建环境变量,请转到 Azure 门户中的应用。然后,从侧栏中选择应用程序设置。向下滚动到 App Setting Names,您应该能够使用每个 App Service 中的每个客户的数据库连接字符串创建一个应用程序设置。

      有关如何执行此操作的更多信息,请查看Stack Overflow 上的这篇文章。

      另一种选择是为每个客户创建一个具有新槽的应用服务。它们都将从主应用服务继承其设置。在每个子 App Service 中,您将能够设置一个已开槽的应用程序设置,该设置仅适用于该槽。但是,这与之前创建 3 个单独的应用服务的选项非常相似。这是more information 使用时隙应用服务。它旨在用作创建登台和生产环境的一种方式。

      【讨论】:

      • 我可以确认这是正确的答案。发生的技术问题是,如果您使用 InProcess Hosting for IIS(您应该使用它来提高性能),它只允许每个 AppPool 一个 ASP.net Core 应用程序。 Azure Web Apps 只有一个可用的应用程序池。如果您尝试在应用程序目录中托管两个 ASP.net Core 应用程序,首先运行的应用程序将优先运行,而另一个应用程序将失败并出现 500 错误。
      猜你喜欢
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 2010-12-10
      相关资源
      最近更新 更多