Отказано в доступе к wwwroot после развертывания DevOps

Я развернул веб-приложение .Net Core в службе приложений Azure с помощью Azure DevOps. Теперь, когда я пытаюсь создать файл в «D:\home\site\wwwroot» с помощью Kudu, он говорит:

409 Conflict: Could not write to local resource 'D:\home\site\wwwroot\anc' >due to error 'Could not find file 'D:\home\site\wwwroot\anc'.'.

Я заметил, что разрешения для каталога «D:\home\site\wwwroot» отличаются от разрешений в аналогичном веб-приложении, которое я развернул с помощью профиля публикации.

Результат Get-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...      


Результат Get-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 после развертывания DevOps

Как я могу сделать каталог wwwroot доступным для записи?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
11
0
6 973
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Do not write

любой файл в wwwroot, когда вы находитесь в облаке. Потому что Azure может изменить ваш компьютер/сервер, и он просто переместит ваши публикуемые gfiles. Не те файлы, которые вы добавили после публикации. Так вы их потеряете.

Спасибо за ответ. И, пожалуйста, приведите пример для вашего ответа.

Fuat 08.04.2019 15:38

Спасибо за совет, но речь идет не только о создании новых файлов, но и об удалении существующих файлов

Ryszard Sikora 08.04.2019 16:29

Когда вы развертываете как zip, вы не можете редактировать файловую систему.

Цитата ниже из https://tomasherceg.com/blog/post/azure-app-service-cannot-create-directories-and-write-to-filesystem-when-deployed-using-azure-devops

Я вообще не знал об этой функции, и более того, настройка скрыта в задаче VSTS, поэтому я ее не заметил. Вам нужно развернуть раздел «Дополнительные параметры развертывания» и установить флажок «Выбрать метод развертывания», который по умолчанию не установлен. Только после этих двух кликов вы увидите раскрывающийся список методов развертывания — ZipDeploy используется по умолчанию.

Мне нужно было изменить его, чтобы использовать WebDeploy, чтобы файлы приложения хранились как обычные файлы, и приложение могло писать в файловой системе, как раньше.

У меня была такая же проблема, и мне потребовалась целая вечность, чтобы понять это.

см. ссылку: https://theazureissues.blogspot.com/2019/04/409-conflict-could-not-write-to-local.html

The application setting ‘WEBSITE_RUN_FROM_PACKAGE=1’ of the App Service makes the wwwroot folder of the application as read-only.

Я просто установил это значение на 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 это также может быть

WEBSITE_RUN_FROM_ZIP

установка приложения. (в моем случае это не было проблемой)

Ответ принят как подходящий

Изменить этот КЛЮЧ НАСТРОЙКИ ПРИЛОЖЕНИЯ

WEBSITE_RUN_FROM_PACKAGE = 1 to 0

Этот параметр делает wwwroot файловой системой, доступной только для чтения.

При запуске из пакета это строго соблюдается, поскольку папка wwwroot становится доступной только для чтения.

@Tech-gayan, где найти КЛЮЧ НАСТРОЙКИ ПРИЛОЖЕНИЯ? Я не могу найти WEBSITE_RUN_FROM_PACKAGE, где он находится. Не могли бы вы помочь найти его в инструменте Azure DevOps?

Md Aslam 16.06.2020 06:58

@MdAslam Это настройка приложения. вы можете найти его в разделе конфигурации в соответствующей службе приложений в Azure.

tech-gayan 16.06.2020 12:51

Большое спасибо. Я выполнил поиск в инструменте Azure DevOps.

Md Aslam 17.06.2020 06:37

Когда я меняю 1 на 0 и сохраняю настройку, мой сайт не работает и выдает ошибку 500.37 вот так? любая причина?

Saad Awan 28.09.2020 15:11

Другие вопросы по теме