azure - Azure WEBSITE_RUN_FROM_PACKAGE 真的意味着不解压 zip 存档吗?

标签 azure azure-devops azure-web-app-service

我正在通过 GitHub 工作流程将 .NET Framework Web 应用程序 zip 部署到 Azure 应用服务。

我已在 Azure 控制台的设置/配置/应用程序设置页面中将WEBSITE_RUN_FROM_PACKAGE 设置为 1。我还尝试将 WEBSITE_RUN_FROM_ZIP 设置为 1,以防万一(尽管我认为这是一个过时的标志)。

该包在 GitHub 中正确构建,我可以看到它显示在我的 Kudu 调试控制台中的 C:\home\site\wwwroot 下(作为 MyPackageName.zip)以及 C:\home\data\SitePackages(例如 20220512205318.zip)。

我的 YAML 的部署部分是:

deploy:
  runs-on: windows-latest
  needs: build
  environment:
    name: 'Test'
    url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

  steps:
    - name: Download artifact from build job
      uses: actions/download-artifact@v2
      with:
        name: ASP-app

    - name: Deploy to Azure Web App
      id: deploy-to-webapp
      uses: azure/webapps-deploy@v2
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_XYZsecret }}
        package: .

我上传到 GitHub 的 .PublishSettings 如下所示:

<publishData>
    <!-- Which one of these 3 profiles is my YAML using?  I don't actually know. -->
    <publishProfile profileName="mywebappname-test - Web Deploy" publishMethod="MSDeploy"  etc="foobar">
        <databases/>
    </publishProfile>
    <publishProfile profileName="mywebappname-test - FTP" publishMethod="FTP" etc="foobar">
        <databases/>
    </publishProfile>
    <publishProfile profileName="mywebappname-test - Zip Deploy" publishMethod="ZipDeploy" etc="foobar">
        <databases/>
    </publishProfile>
</publishData>

zip 包不会自动解压。与我交谈的 MSFT 支持代表表示这就是问题所在,事实上,当我将软件包下载到我的计算机并将其放入 Kudu 的 Tools/Zip Push Deploy 页面时,我看到该软件包已解压,我可以通过设置适当的物理路径来匹配“/”虚拟路径来使站点正常工作。具体来说,Kudu Tools Zip Push 会导致我的 web.config 和 favicon.ico 等文件显示在:

C:\home\site\wwwroot\Content\D_C\a\foo\bar\good\boy\obj\Test\Package\PackageTmp

我可以转到应用服务的 Azure 控制台,导航到设置/配置/路径映射、虚拟应用程序和目录,然后将现有条目编辑为:

Virtual path: /
Physical Path: site\wwwroot\Content\D_C\a\foo\bar\good\boy\obj\Test\Package\PackageTmp
Type: Application

然后看到我的网站出现在浏览器中。

但是,当执行任何操作来解压存档时,我将条目保留为:

Virtual path: /
Physical Path: site\wwwroot
Type: Application

我无法在浏览器中查看我的网站,只能看到“您无权查看此目录或页面”。然后,当我深入查看 Kudo 中的日志时,我在主站点上看到 403.14 - 禁止错误,在 C:\home\site\wwwroot\favicon.ico 上看到 404.0 - 未找到错误。 (与我的其他文件一样,favicon.ico 仍然位于 [...]\foo\bar\good\boy\obj\Test\Package\PackageTmp\favicon.ico 的 zip 存档中.)

我的问题是:

  1. 我的网络应用程序应该能够仅使用我的 zip 文件运行 C:\home\site\wwwroot\MyPackageName.zip 吗? 或者它真的需要解压为MSFT 代表表示?
  2. 如果它应该以这种方式运行,我想念什么?我假设它是在我的 YAML 中(它实际上在此处选择了 3 个publishProfile 设置中的哪一个?)或在 Settings/Configuration/Path MappingsApplication settings 中,但我有现在不知道该怎么办,我已经没有主意了。

谢谢,埃里克

最佳答案

  1. Should my web app be able to run at all with just my zip file sitting there as C:\home\site\wwwroot\MyPackageName.zip?

差不多,是的,只是不在 wwwroot 中。启用 WEBSITE_RUN_FROM_PACKAGE 后,应用程序将直接从存档作为只读目录安装运行。没有任何内容被复制到 wwwwroot 或其他任何地方。

  • If it is supposed to run this way, any ideas on what am I missing?

  • 我的理解是不支持从 GitHub 部署包,或者 GitHub 文件与从应用服务上的包运行不兼容。

    关于azure - Azure WEBSITE_RUN_FROM_PACKAGE 真的意味着不解压 zip 存档吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72222698/

    相关文章:

    azure - 用于检查 Azure Cosmos 中是否启用自动缩放的 PowerShell 脚本

    azure - 访问 Azure Blob 存储时出现错误 400 错误请求 - 所有最新组件

    entity-framework-migrations - 如何处理 Azure 部署槽中的数据库回滚?

    azure - 需要在电子邮件通知中发送发布测试结果图表

    azure - 将 WebApp 发布到 Azure 应用服务 - 未列出资源组

    asp.net - Azure 应用服务中的异地复制

    在hadoop和mapreduce上运行R脚本

    azure - 如果我在应用程序网关上启用了防火墙,是否还需要在虚拟网络上启用防火墙?

    azure-devops - “在池默认中找不到满足指定要求的代理 :

    powershell - 升级托管 2017 代理上的 AzureRM Powershell(VSTS - Visual Studio Team Services)