Запуск кукловода в службе приложений Azure Linux - PullRequest
0 голосов
/ 19 октября 2019

Я использую приложение .Net Core 2.x в службе приложений Linux. Когда я запускал Puppeteer, я получал следующие ошибки:

/home/site/wwwroot/.local-chromium/Linux-686378/chrome-linux/chrome: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory
PuppeteerSharp.ChromiumProcessException:
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at PuppeteerSharp.ChromiumProcess+State+StartingState+<StartCoreAsync>d__5.MoveNext (PuppeteerSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at PuppeteerSharp.ChromiumProcess+State+StartingState+<StartCoreAsync>d__5.MoveNext (PuppeteerSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at PuppeteerSharp.Launcher+<LaunchAsync>d__7.MoveNext (PuppeteerSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e

Я знаю об ограничениях в Службе приложений Windows, которые не позволяют запускать Selenium и GDI, но я думал, что это будет работать в Службах приложений Linux.

https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#win32ksys-user32gdi32-restrictions

Вот мой код:

var browserFetcher = new BrowserFetcher(new BrowserFetcherOptions
{
      Path = ".local-chromium"
});

await browserFetcher.DownloadAsync(BrowserFetcher.DefaultRevision);

var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
      Headless = true,
      ExecutablePath = browserFetcher.RevisionInfo(BrowserFetcher.DefaultRevision).ExecutablePath,
      Args = new []{"--no-sandbox"}
});

using (var page = await browser.NewPageAsync())
{
      await page.GoToAsync(url);
      await page.WaitForSelectorAsync($"#{waitById}");

      return await page.GetContentAsync();
}

1 Ответ

0 голосов
/ 20 октября 2019

Судя по моему опыту и, как сказал @vladimir, я также думаю, что ваша проблема была вызвана отсутствием библиотеки libX11 в образе вашего контейнера Службы приложений Azure в Linux.

Вы можете попробовать обратиться ксодержание GitHub issus установить X11 на докер-контейнер? # 266 и поток TechOverflow Как исправить ошибку puppetteer при загрузке общих библиотек: libX11-xcb.so.1: не удается открыть файл общего объекта: нет такого файла или каталога для создания настраиваемого образа докераи запустить его локально.

Для Azure, пожалуйста, обратитесь к официальным документам ниже, чтобы выполнить установку функций X11 и попытаться развернуть и запустить его.

  1. Настройкапользовательский контейнер Linux для службы приложений Azure
  2. Развертывание в Azure с использованием Docker
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...