puppeteer-sharp icon indicating copy to clipboard operation
puppeteer-sharp copied to clipboard

PdfDataAsync timeout in IIS

Open yuxiang970813 opened this issue 1 year ago • 4 comments

Hi, my project's print function has been running smoothly for the past few weeks and no code updates have been made, but since May 27th it is suddenly not working properly. When the print button is pressed, PdfDataAsync gets stuck until it times out. I have tried upgrading to the latest version (18.0.1) or downgrading to other versions of PuppeteerSharp to no avail, and I have noticed that PdfDataAsync works when debugging in Visual Studio, but gets stuck if publishing to IIS. I also created a new project and published to another server and it still happens.

  • PuppeteerSharp version: 17.0.0
  • NET version: .NET Core 8.0.

Here is the code of the printing function:

BrowserFetcher browserFetcher = new();
await browserFetcher.DownloadAsync();
await using IBrowser browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true, });
await using IPage page = await browser.NewPageAsync();
await page.SetViewportAsync(new ViewPortOptions { Width = 794, Height = 1123 });
await page.GoToAsync(Security.DecodeBase64(url));

byte[] pdfStream = await page.PdfDataAsync();

return File(pdfStream, "application/pdf");

And here is the error message get from event viewer:

System.TimeoutException: Timeout of 180000 ms exceeded
   at PuppeteerSharp.Helpers.TaskHelper.WithTimeout[T](Task`1 task, TimeSpan timeout, Func`2 exceptionFactory) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/Helpers/TaskHelper.cs:line 185
   at PuppeteerSharp.Cdp.CdpCDPSession.SendAsync(String method, Object args, Boolean waitForCallback, CommandOptions options) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/Cdp/CdpCDPSession.cs:line 112
   at PuppeteerSharp.CDPSession.SendAsync[T](String method, Object args, CommandOptions options) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/CDPSession.cs:line 44
   at PuppeteerSharp.Cdp.CdpPage.PdfInternalAsync(String file, PdfOptions options) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/Cdp/CdpPage.cs:line 829
   at PuppeteerSharp.Page.PdfAsync(String file, PdfOptions options) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/Page.cs:line 382
   at ltis2023.Controllers.PrintingController.Pdf(String url, Boolean isPortrait)

yuxiang970813 avatar Jun 10 '24 07:06 yuxiang970813

Hi, I had the same problem and I fixed it by moving to PuppeteerExtraSharp, which works out of the box in my case.

The base PuppeteerSharp package would need an extra package to work in IIS, but that package isn't compatible with the last version of it:

https://stackoverflow.com/a/62429184/2373249 https://github.com/hardkoded/puppeteer-sharp/issues/2219

kjenova avatar Jun 10 '24 13:06 kjenova

Hi, I had the same problem and I fixed it by moving to PuppeteerExtraSharp, which works out of the box in my case.

The base PuppeteerSharp package would need an extra package to work in IIS, but that package isn't compatible with the last version of it:

https://stackoverflow.com/a/62429184/2373249 #2219

Thanks kjenova, the PuppeteerExtraSharp works for me! But I would like to know why puppeteer-sharp does not support this feature now?

yuxiang970813 avatar Jun 11 '24 01:06 yuxiang970813

Thank you for the report. I'm on vacation right now. I'll take a look at it on Monday!

kblok avatar Jun 16 '24 05:06 kblok

Thanks @kjenova, I ran into the same issue.

But it only stopped working when I upgraded to Puppeteer 18, it worked fine in 17.

rogerfar avatar Jul 01 '24 19:07 rogerfar

Hi, I had the same problem and I fixed it by moving to PuppeteerExtraSharp, which works out of the box in my case.

The base PuppeteerSharp package would need an extra package to work in IIS, but that package isn't compatible with the last version of it:

https://stackoverflow.com/a/62429184/2373249 #2219

I bet that PuppeteerExtraSharp works because the last version is one year old, and it must be using an old Chrome version.

kblok avatar Jul 03 '24 13:07 kblok

I would recommend using the Chromium browser till this issue is solved in Chrome for testing.

kblok avatar Jul 03 '24 13:07 kblok