У меня есть веб-приложение 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) код отлично работает второй раз, третий раз и так далее...


Используйте Kudu, чтобы загрузить файл прямо в это место. Вероятно, exe удаляется на стороне сервера средствами обнаружения вредоносных программ. Песочница, я предлагаю вам запустить это в контейнере.
Прочтите о песочнице и ограничениях github.com/projectkudu/kudu/wiki/Azure-Web-App-песочница, я уверен, что это проблема
Я знаю о них, поэтому я использую план Basic+. Но тогда почему это работает с первого раза? Если я поменял план на Бесплатный, то с первого раза тоже не работает (что нормально, по ограничениям).
Используя kudu, я вижу, что exe-файл находится в файловой системе Azure... Как будто приложение запускается из другой папки, где файла не существует...