Asp.net 如何在一个Azure Web应用上托管多个应用

Asp.net 如何在一个Azure Web应用上托管多个应用,asp.net,angular,azure,model-view-controller,web-applications,Asp.net,Angular,Azure,Model View Controller,Web Applications,我构建了应用程序(ASP.NET核心MVC+Angular)。我需要为三个不同的客户部署此应用程序。此时,每个客户都有自己的数据库。是否可能在一个azure web应用程序中有多个站点(如mysite.com/a、mysite.com/b和mysite.com/c),并且每个站点都有自己的连接字符串?或者我应该使用path 1 customer-1 web应用程序吗?Tnx虽然可能有一种方法可以将您的应用程序部署到相同的应用程序服务。它肯定会涉及到编辑Kudu构建脚本。我不知道有多少细节可以让它

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

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

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

有关如何做到这一点的更多信息,请查看上的这篇文章


另一个选择是为每个客户创建一个具有新插槽的应用程序服务。他们都将从主应用程序服务继承他们的设置。在每个子应用程序服务中,您将能够设置一个有槽的应用程序设置,该设置仅适用于该槽。但是,这与上一个选项非常相似,在该选项中,您创建了3个独立的应用程序服务。下面是关于使用时隙应用程序服务的介绍。它旨在用作创建临时和生产环境的一种方式。

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

您可以设置1个标准应用程序服务计划,并在该计划内设置多个应用程序服务,并使用子域指向这些应用程序服务(CustomerA.mysite.com、CustomerB.mysite.com)。在单个应用程序服务计划中设置多个应用程序服务不收取额外费用


这有几个优点。您可以使用Azure的应用程序设置管理,您可以使用部署槽,您可以一次更新一个客户的生产环境,这样您就可以在其他客户运行稳定代码时进行一个客户测试。

我可以确认这是正确的答案。出现的技术问题是,如果您正在为IIS使用进程内托管(为了提高性能,您应该这样做),则每个AppPool只允许一个ASP.net核心应用程序。Azure Web应用程序只有一个可用的应用程序池。如果您尝试在应用程序目录中托管两个ASP.net核心应用程序,则第一个运行的应用程序将优先,而另一个应用程序将失败并出现500错误。