我正在通过 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 存档中.)
我的问题是:
- 我的网络应用程序应该能够仅使用我的 zip 文件运行
C:\home\site\wwwroot\MyPackageName.zip 吗?
或者它真的需要解压为MSFT 代表表示? - 如果它应该以这种方式运行,我想念什么?我假设它是在我的 YAML 中(它实际上在此处选择了 3 个publishProfile 设置中的哪一个?)或在
Settings/Configuration/Path Mappings
或Application settings
中,但我有现在不知道该怎么办,我已经没有主意了。
谢谢,埃里克
最佳答案
-
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/