Невозможно запустить jsreportlocal в Azure WebApp Linux (.Net core 2.1 MVC) - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть .Netcore 2.1 MVC, развернутая в Azure WebApp Linux. Мне нужно создавать отчеты в формате PDF, поэтому я решил использовать jsreport local.

var rs = new LocalReporting().UseBinary(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? JsReportBinary.GetBinary() : jsreport.Binary.Linux.JsReportBinary.GetBinary()).Configure((cfg) =>
    {
         cfg.HttpPort = 1000;
         cfg.AllowedLocalFilesAccess().BaseUrlAsWorkingDirectory();
         return cfg;
    }).AsUtility().Create();
var report = await rs.RenderAsync(new RenderRequest
    {
          Template = new Template
         {
              Recipe = Recipe.ChromePdf,
              Engine = Engine.None,
              Content = contentToPrint
          }
    });

В Windows этот код работает нормально. После развертывания в Web App (Linux) я получаю сообщение об ошибке:

Отчет об ошибке при отображении ошибки: возникла критическая ошибка при попытке выполнить команду рендеринга: не удалось запустить chrome! /Tmp/jsreport/compile/jsreport-2.4.0-Bk_dhUp8V/chrome/chrome: ошибка при загрузке общих библиотек libX11.so.6: не удается открыть общий объектный файл: такого файла или каталога нет: УСТРАНЕНИЕ НЕПОЛАДОК: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md (1). вызвано ошибкой (1) -> meta = {"remoteStack": "Ошибка: не удалось запустить chrome! \ n / tmp / jsreport / compile / jsreport-2.4.0-Bk_dhUp8V / chrome / chrome: ошибка при загрузке общих библиотек: libX11.so.6: не удается открыть файл общего объекта: такой файл или каталог не существует \ n \ n \ nУСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md\n\n в onClose (jsreportRuntime.js: 400867: 14) \ n в Interface.helper.addEventListener ( jsreportRuntime.js: 400856: 50) \ n в emitNone (events.js: 111: 20) \ n в Interface.emit (events.js: 208: 7) \ n в Interface.close (readline.js: 370: 8 ) \ n в Socket.onend (readline.js: 149: 10) \ n в emitNone (events.js: 111: 20) \ n в Socket.emit (events.js: 208: 7) \ n в endReadableNT (_stream_readable) .js: 1064: 12) \ n в _combinedTickCallback (внутренний / process / next_tick.js: 138: 11) \ n в process._tickCallback (внутренний / process / next_tick.js: 180: 9) "}, стек = ошибка: в responseToBuffer ([eval]: 72595: 29) в concat ([eval]: 72648: 40) в ConcatStream. ([eval]: 17182: 43) в emitNone (events.js: 111: 20) в ConcatStream.emit (events.js: 208: 7) в finishMaybe ([eval]: 97353: 14) в afterWrite ([eval] : 97215: 3) в _combinedTickCallback (внутренний / process / next_tick.js: 144: 20) в process._tickCallback (внутренний / process / next_tick.js: 180: 9)

1 Ответ

1 голос
/ 08 апреля 2019

Безголовый хром требует некоторых дополнительных общих библиотек, которых нет в стандартной среде веб-приложения Azure.Однако вы можете использовать основанное на докере веб-приложение Azure и установить эти необходимые библиотеки.

RUN apt-get update && \   
    apt-get install -y gnupg  libgconf-2-4 wget && \
    wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
    sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && \
    apt-get update && \
    apt-get install -y google-chrome-unstable --no-install-recommends

ENV chrome:launchOptions:args --no-sandbox

См. Это в документации
https://jsreport.net/learn/dotnet-local#docker
https://jsreport.net/learn/dotnet-local#azure-web-apps

и пример
https://github.com/jsreport/jsreport-dotnet-example-docker

...