Azure — ASP.NET Core FileNotFoundException

У меня есть веб-приложение ASP.NET Core, размещенное в Azure AppService (базовый план — B1), и я использую phantomjs для создания PDF-файла из html (на основе https://github.com/TheSalarKhan/PhantomJs.NetCore).

Проблема в том, что во второй раз, когда я создаю PDF-файл, приложение вылетает с FileNotFoundException при запуске процесса - см. https://github.com/TheSalarKhan/PhantomJs.NetCore/blob/d580fba1128756acc8384107a17b399397475dad/PdfGenerator.cs#L54 (я использую Windows => windows_phantomjs.exe) - с первого раза работает нормально. Я попытался повторно скопировать windows_phantomjs.exe из wwwroot в PhantomJSRoot, но снова получаю FileNotFoundException, когда делаю:

File.Copy("D:\home\site\wwwroot\windows_phantomjs.exe", "D:\home\site\wwwroot\PhantomJSRoot\windows_phantomjs.exe", true);

Exception Info: System.IO.FileNotFoundException: Could not find file 'D:\home\site\wwwroot\windows_phantomjs.exe'.

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

Любые идеи о том, как обойти это? В dev box (macOS) код отлично работает второй раз, третий раз и так далее...

Как установить 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...
1
0
789
1

Ответы 1

Используйте Kudu, чтобы загрузить файл прямо в это место. Вероятно, exe удаляется на стороне сервера средствами обнаружения вредоносных программ. Песочница, я предлагаю вам запустить это в контейнере.

Используя kudu, я вижу, что exe-файл находится в файловой системе Azure... Как будто приложение запускается из другой папки, где файла не существует...

Eusebiu Marcu 17.02.2019 19:27

Прочтите о песочнице и ограничениях github.com/projectkudu/kudu/wiki/Azure-Web-App-песочница, я уверен, что это проблема

Jautomator 18.02.2019 10:02

Я знаю о них, поэтому я использую план Basic+. Но тогда почему это работает с первого раза? Если я поменял план на Бесплатный, то с первого раза тоже не работает (что нормально, по ограничениям).

Eusebiu Marcu 18.02.2019 14:28

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