如何在同一个 Azure Web 应用服务中托管多个应用程序?

Luc*_*ias 4 azure azure-web-app-service asp.net-core

我想托管两个 ASP.NET Core 应用程序、一个 Web API 和一个 Blazor 服务器应用程序,但我在互联网上搜索,我找到的答案仅针对一个应用程序内部的不同路径,这不是我的情况。我会像使用同一 Azure Web 应用程序的子地址一样使用它们,例如:www.example.comwww.example.com/api,其中每个都是不同的 .NET Core 应用程序。所以我怀疑我需要创建两个 Azure 应用程序服务并尝试将它们都进行通信,但我想知道的结构化可能不会以这种方式工作,对吗?我怎么能做到这一点?

Fro*_*sen 10

我的设置和你一样;一个 ASP.NET Core Web API 和一个 Blazor 服务器端应用程序。

由于您希望对这两个服务使用相同的域,如果要将请求路由到两个不同的 Azure 应用服务,则必须使用 Azure API 管理或其他一些代理。

一个更简单的选择是将这两个服务部署到同一个应用服务,但作为不同的虚拟应用程序。您可以正常发布 Blazor 应用程序,但对于 Web API,您将发布到新的虚拟应用程序/api

要启用此虚拟应用程序,请导航到应用服务中的配置路径映射。在这里,您已经拥有/指向的默认虚拟应用程序site\wwwroot。然后添加另一个名为/api指向的虚拟应用程序site\wwwroot\api

Azure 应用服务配置

添加虚拟应用程序时,请记住删除目录的复选框(改为使其成为虚拟应用程序),并可选择启用预加载:

将虚拟应用程序添加到 Azure 应用服务

如果使用 Azure DevOps Pipeline 发布应用程序,则它可以选择指定虚拟应用程序是否应使用默认值以外的其他应用程序

您现在可以导航到两个不同的 URL 并点击每个服务。请注意,在开发 Web API 时,不应api向控制器添加路由,因为此虚拟应用程序会为您执行此操作。

  • 仅供参考:Linux 上的应用服务不提供“虚拟应用程序和目录”选项。https://learn.microsoft.com/en-us/answers/questions/664517/azure-web-app-missing-virtual-directory-option.html (4认同)
  • 如果我对问题的理解正确,两个 API 将在同一个应用服务内运行,因此也在同一个槽中运行。因此,如果切换部署槽,两个 API 都会切换。 (2认同)