Можно ли использовать System.Drawing.Common в Функциях Azure с настраиваемым образом докера?

Я использую PDF-библиотеку Aspose, основанную на System.Drawing.Common, и запускаю ее на .Net Core 2.1. в Linux. Я знаю, что это не будет работать в песочнице, поэтому я пытаюсь использовать собственный образ Docker (устанавливаю libgdiplus, libc6-dev и ttf-mscorefonts-installer, как указано, например, в Aspose).

Я заставил его работать в докеризованном веб-API в качестве веб-приложения, но при использовании в качестве функции Azure вызовы завершаются с ошибкой PlatformNotSupportedException:

Microsoft.Azure.WebJobs.Host.FunctionInvocationException: исключение при выполнении функции: xxx ---> System.PlatformNotSupportedException: System.Drawing не поддерживается на этой платформе.

Связанные вопросы # 1 и # 2 похожи, но они не используют собственный образ Docker.

Суть этого вопроса заключается в следующем: применяются ли ограничения песочницы для System.Drawing.Common также при использовании пользовательского образа Docker?

Для справки, вот раздел образа среды выполнения из Dockerfile:

FROM mcr.microsoft.com/azure-functions/dotnet:2.0

#libgdiplus, libc6-dev and ttf-mscorefonts are for the aspose library
# sources.list manipulation and eula acceptance stuff is for ttf-mscorefonts
RUN sed -i "s/main/main contrib/g" /etc/apt/sources.list \
&& echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections \
&& apt-get update \
&& apt-get install -y --no-install-recommends libgdiplus libc6-dev ttf-mscorefonts-installer 

ENV AzureWebJobsScriptRoot=/home/site/wwwroot

COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]

Обновление: работает тот же код обработки PDF-файлов в веб-приложении .Net Core в образе докера «Функции Azure». Это указывает на то, что проблема связана со средой выполнения Функций Azure.

Вот пример фрагмента, который нужно добавить в ранее упомянутый Dockerfile, чтобы вместо этого он запускал веб-приложение:

WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT [ "dotnet", "/app/WebApiProjectName.dll" ]

person Lauri Helkkula    schedule 22.03.2019    source источник
comment
Это не похоже на проблему с API Aspose.PDF в частности, но на некоторые проблемы, связанные со средой и конкретной платформой, в целом. Вы также уже установили проинструктированные компоненты. Однако мы зарегистрировали заявку на расследование с идентификатором PDFNET-46183 в нашей системе управления проблемами и сообщим вам наши дальнейшие выводы о вашем сценарии. PS: Я работаю с Aspose в качестве евангелиста разработчиков.   -  person Farhan Raza    schedule 23.03.2019
comment
Спасибо, Фархан. Я также считаю, что это связано со средой выполнения Функций Azure, но вся помощь очень ценится!   -  person Lauri Helkkula    schedule 25.03.2019
comment
Ваши недавние открытия делают очевидным, что они связаны со средой выполнения Функций Azure. Однако мы рады сообщить вам, что мы работаем над устранением зависимости от пространства имен System.Drawing, чтобы API мог работать бесперебойно независимо от любой платформы.   -  person Farhan Raza    schedule 25.03.2019


Ответы (1)