部署devops后wwwroot上的访问被拒绝

eqoofvh9  于 2021-06-24  发布在  Kudu
关注(0)|答案(4)|浏览(437)

我已使用azure devops将.net核心web应用程序部署到azure应用程序服务。现在,当我尝试使用kudu在“d:\home\site\wwwroot”中创建文件时,它会显示:
409冲突:由于错误“找不到文件”d:\home\site\wwwroot\anc“”,无法写入本地资源“d:\home\site\wwwroot\anc!”。
我注意到“d:\home\site\wwwroot”目录中的permissions与我使用publish profile部署的类似web应用中的permissions不同
在有问题的应用程序上获取acl结果:

PS D:\home\site\wwwroot> Get-Acl "D:\home\site\wwwroot"
Get-Acl "D:\home\site\wwwroot"

    Directory: D:\home\site

Path    Owner                   Access                                         

----    -----                   ------                                         

wwwroot IIS APPPOOL\luncher-dev NT AUTHORITY\SYSTEM Allow  FullControl...

在其他类似应用程序上获取acl结果:

PS D:\home\site\wwwroot> Get-Acl "D:\home\site\wwwroot"
Get-Acl "D:\home\site\wwwroot"

    Directory: D:\home\site

Path    Owner                  Access                                          

----    -----                  ------                                          

wwwroot BUILTIN\Administrators Everyone Allow  DeleteSubdirectoriesAndFiles,...

来自azure devops的相应发布管道

如何使wwwroot目录可写?

9wbgstp7

9wbgstp71#

有同样的问题,我花了很长时间才弄明白。
请参见链接:https://theazureissues.blogspot.com/2019/04/409-conflict-could-not-write-to-local.html
应用程序服务的应用程序设置“website\u run\u from\u package=1”使应用程序的wwwroot文件夹为只读。
我只是把它设为0,重新启动我的应用程序,一切都恢复正常。
我找到了另一个链接:https://azureappservices.blogspot.com/2018/06/unable-to-editdelete-files-through-kudu.html 但是,在从devops部署之后,我甚至无法编辑属性。所以我相信这是一个修复特定文件被标记为只读。

检查此链接:https://tomasherceg.com/blog/post/azure-app-service-cannot-create-directories-and-write-to-filesystem-when-deployed-using-azure-devops 也可能是
网站\u从\u zip运行\u
应用程序设置(这不是我的问题)

2eafrhcq

2eafrhcq2#

当您作为zip部署时,您不能编辑文件系统。
以下引用自https://tomasherceg.com/blog/post/azure-app-service-cannot-create-directories-and-write-to-filesystem-when-deployed-using-azure-devops
我根本不知道这个特性,而且这个设置隐藏在vsts任务中,所以我没有注意到。您需要展开AdditionalDeploymentOptions部分并单击SelectDeploymentMethod复选框,该复选框在默认情况下未选中。只有在这两次单击之后,您才能看到带有部署方法的下拉列表–zipdeploy是默认的方法。
我需要将其更改为使用webdeploy,这样应用程序文件将作为普通文件存储,并且应用程序可以像以前一样写入文件系统。

evrscar2

evrscar23#

更改此应用程序设置键

WEBSITE_RUN_FROM_PACKAGE = 1 to 0

此设置使wwwroot成为只读文件系统。
对于run-from包,当wwwroot文件夹变为只读时,将严格执行此操作

368yc8dk

368yc8dk4#

不要写
当您在云中时,任何要wwwroot的文件。因为azure可以改变你的机器/服务器,他们只会移动你的发布文件。不是发布后添加的文件。所以你会失去他们。

相关问题