我将托管两个ASP.NET Core应用程序,一个Web API和一个Blazor Server App,但我在互联网上进行搜索,发现的答案仅针对一个应用程序内部的不同路径,这不是我的情况。我想将它们用作同一个Azure Web App的子地址,例如: www.example.com 和 www.example.com/api 是一个不同的.NET Core应用程序。因此,我怀疑需要创建两个Azure App Services并尝试将二者进行通信,但是也许我想知道这种结构无法以这种方式工作,对吗?我该怎么做?
答案 0 :(得分:6)
我和您的设置相同;一个ASP.NET Core Web API和Blazor服务器端应用程序。
由于要为两个服务使用相同的域,如果要将请求路由到两个不同的Azure App Services,则必须使用Azure API管理或其他代理。
一个更简单的选择是将两个服务都部署到相同的App Service中,但部署为different virtual applications。您可以正常发布Blazor应用程序,但是对于Web API,您将发布到新的虚拟应用程序/api
。
要启用此虚拟应用程序,请导航至App Service中的配置,然后导航至路径映射。在这里,您已经拥有指向/
的默认虚拟应用程序site\wwwroot
。然后,添加另一个名为/api
的虚拟应用程序,该虚拟应用程序指向site\wwwroot\api
:
添加虚拟应用程序时,请记住删除目录的复选框(改为使其成为虚拟应用程序),并可以选择启用“预加载”:
如果您使用Azure DevOps Pipeline发布应用程序,则可以选择使用specify virtual application,而不是使用默认值。
您现在可以导航到两个不同的URL并点击每个服务。请注意,在开发Web API时,请勿将api
添加到控制器路由,因为此虚拟应用程序会为您执行此操作。
答案 1 :(得分:1)
您可以将网站保留在单独的项目中,并使用Azure中的‘virtual directories and applications’
设置在同一网站下发布两个不同的项目。
Goto web app -> Settings -> Application Settings -> Virtual applications and directories
在Web Apps中,每个站点及其子应用程序都在同一应用程序池中运行。如果您的站点有多个利用多个应用程序池的子应用程序,请将它们合并到具有通用设置的单个应用程序池中,或将每个应用程序迁移到单独的Web应用程序。
您可以查看博客帖子Deploying multiple virtual directories to a single Azure Website
了解更多详细信息。