Я пытаюсь выполнить следующий код:
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
#if DEBUG
var chromeLocation = Path.Combine(context.FunctionDirectory, @"../.local-chromium/Win64-706915/chrome-win/chrome.exe");
#endif
stage = "Start Browser";
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { "--no-sandbox", "--shm-size=1gb" }
#if DEBUG
,
ExecutablePath = chromeLocation,
IgnoreHTTPSErrors = true
#endif
});
var page = await browser.NewPageAsync();
var headers = new Dictionary<string, string> { { "Authorization", $"Bearer {authToken}" } };
await page.SetExtraHttpHeadersAsync(headers);
stage = "Load Page";
await page.GoToAsync(printToPdfRequest.TargetUrl);
stage = "Load Page 1";
Thread.Sleep(5000);
// This waits unti the loader has disappeared or times-out after 30 seconds
await page.WaitForFunctionAsync("() => document.getElementsByClassName('loader').length > 0 && document.getElementsByClassName('loader')[0].style.length > 0 && document.getElementsByClassName('loader')[0].style[0] === 'display' && document.getElementsByClassName('loader')[0].style['display'] === 'none'");
Это работает локально, но не работает в последней строке при развертывании в контейнере docker. При этом появляется следующее сообщение:
Ошибка PrintToPdf на этапе загрузки страницы 1 с сообщением Ошибка протокола (Runtime.callFunctionOn): Сессия закрыта. Скорее всего, страница была закрыта. Причина закрытия: NetworkManager не смог обработать Network.requestWillBeSent. Значение не может быть нулевым. (Параметр «ключ»). в System.Collections.Concurrent.ConcurrentDictionary 2.ThrowKeyNullException() at System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd (ключ TKey, Fun c2 valueFactory) at PuppeteerSharp.Helpers.MultiMap
2.Add (ключ TKey, значение TValue) в PuppeteerSharp.Helpers.AsyncDictionaryHelper`2.GetItemAsyn c (TKey key) в PuppeteerSharp.NetworkManager.OnRequestAsyn c (RequestWillBeSentPayload e, String interceptionId) в PuppeteerSharp.NetworkManager.OnRequestWillBeSentAsyn c (RequestWillBeSentgsPayNextManager) в PuppeteerSharp.NetworkManager. Что означает эта ошибка и как ее исправить?
Это работает в функции azure, поддерживаемой экземпляром контейнера azure, если это имеет какое-либо значение