使用Visual Studio 2022部署具有多个虚拟应用程序的Azure应用服务

ctehm74n  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(181)

我当前正在使用Azure云服务(经典),并且能够使用Azure云服务项目有效地部署包含4个虚拟应用程序的WebApp。我的ServiceDefinition.csdef文件类似于:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="My.Azure.Web.API" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
  <WebRole name="My.Web.API" vmsize="Small">
    <Sites>
      <Site name="Web" physicalDirectory="{path to My.Web.API}">
        <VirtualApplication name="webapp1" physicalDirectory="{path to My.Web.WebApp1}" />
        <VirtualApplication name="webapp2" physicalDirectory="{path to My.Web.WebApp2}" />
        <VirtualApplication name="webapp3" physicalDirectory="{path to My.Web.WebApp3}" />
        <VirtualApplication name="webapp4" physicalDirectory="{path to My.Web.WebApp4}" />
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
          <Binding name="HttpsIn" endpointName="HttpsIn" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="{certname}" />
    </Endpoints>
    <Imports>
      <!--<Import moduleName="Diagnostics" />-->
      <Import moduleName="RemoteAccess" />
      <Import moduleName="RemoteForwarder" />
    </Imports>
    <ConfigurationSettings>
      
    </ConfigurationSettings>
    <Certificates>
      <Certificate name="{certname}" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WebRole>
</ServiceDefinition>

我正在致力于迁移到Azure应用程序服务,尽管进行了一些重大的挖掘,但我似乎找不到Visual Studio中针对Azure应用程序服务中多个虚拟应用程序的等效/类似部署过程。
我发现很多帖子都指出在实际的WebApp项目中使用发布功能,但我必须执行4个单独的部署,而不是在一个上。并且需要在App Service配置中预定义虚拟目录。在当前的方法中,虚拟应用程序/目录是在部署过程中定义的。
我计划最终转移到Azure DevOps Pipelines for CI/CD,并希望有一种机制来实现这一点,但目前我只想从Visual Studio中获得一些功能。
在Visual Studio中是否有针对Azure应用服务中多个虚拟应用程序的等效/相似部署流程?如果没有,有哪些选项?
抱歉,如果这是一个重新胎面。我做了我的尽职调查没有明确的答案。除非当然答案是正确的在我面前!?谢谢你的时间!
埃里克

5vf7fwbs

5vf7fwbs1#

请检查以下步骤以从Visual Studio 2022将多个虚拟应用程序部署到Azure应用服务。

  • 在Azure门户中新建应用服务。

  • 在应用服务概述中,单击Download publish profile

  • VS 2022中,创建你想要的框架的应用程序,我已经以.NET Core Apps为例。
    Visual Studio项目文件夹结构

在Azure Portal中创建Virtual Directories的选项仅适用于Azure Windows App Service

  • 在第一个五年一月一日=〉第一个六年一日=〉第一个七年一日=〉第一个八年一日=〉在第一个九年一日下创建第一个十年一日。

  • 确保Virtual PathVisualStudio中的Web App Name相同。
    使用下载的发布配置文件将VS中的每个应用程序发布到Azure应用服务。
  • 右键单击1st WebApp项目=〉Publish =〉添加发布配置文件=〉Import Profile

  • 浏览并上传我们从Azure Portal App Service下载的Publish Profile

  • 更改应用程序的设置。
  • 站点名称必须是我们在门户中创建的App Service name/VirtualPathName。***例如:***此处为VirtualApps29Dec/WebApp1

  • 保存并继续后续步骤以发布应用程序。
  • 对于WebApp2WebApp3WebApp4,请对相同的Publish Profile执行相同的步骤。
    已在KUDU控制台中部署Azure应用服务结构

应用程序的Url's将为

https://virtualapps29dec.azurewebsites.net/WebApp1
https://virtualapps29dec.azurewebsites.net/WebApp2
https://virtualapps29dec.azurewebsites.net/WebApp3
https://virtualapps29dec.azurewebsites.net/WebApp4

最初,当我尝试访问应用程序,我得到了下面的错误.

当我检查部署的应用程序的Web.config时,我可以看到下面的代码。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\WebApp2.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: c238430b-40de-45d7-bbb7-ad96da7c4dc4-->
  • AspNetCoreModule2不允许在同一个应用服务计划中有多个进程内虚拟应用。
  • 我已通过将AspNetCoreModule2更改为AspNetCoreModule解决了此问题
  • 编辑已部署应用程序下的所有Web.config文件。

输出:

相关问题