IIS 中的 PuppeteerSharp - ASP.NET Web 窗体 [英] PuppeteerSharp in IIS - ASP.NET Web Forms

查看:40
本文介绍了IIS 中的 PuppeteerSharp - ASP.NET Web 窗体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试在我们的 ASP.NET Web 窗体应用程序中使用 PuppeteerSharp 生成 PDF,虽然它在本地工作正常,但在部署到 IIS 服务器时收到以下错误.

Trying to use PuppeteerSharp in our ASP.NET Web Forms application to generate a PDF and while it works fine locally I receive the below error when deploying to an IIS server.

我注意到的一件事是创建了一个名为 download-Win64-706915.zip 的零字节 ZIP 文件.

One thing I do notice is that a ZIP file with zero bytes called download-Win64-706915.zip is created.

我的代码如下

var url = ConfigurationManager.AppSettings["EnrolmentFormUrl"] + "?code=" + code;

var fileName = "enrolment" + $"{DateTime.Now:__ddMMyyyyhhmmssfff}" + ".pdf";

var output = Config.attachmentPath + fileName;                     

var browserFetcher = new BrowserFetcher(new BrowserFetcherOptions
{
    Path = Config.attachmentPath
});;

await browserFetcher.DownloadAsync(BrowserFetcher.DefaultRevision).ConfigureAwait(false);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    TransportFactory = AspNetWebSocketTransport.AspNetTransportFactory,
    ExecutablePath = browserFetcher.RevisionInfo(BrowserFetcher.DefaultRevision).ExecutablePath
}).ConfigureAwait(false);

var pdfOptions = new PdfOptions
{
    Format = PaperFormat.A4,
    PreferCSSPageSize = true
};

var page = await browser.NewPageAsync();
await page.GoToAsync(url).ConfigureAwait(false);
await page.PdfAsync(output, pdfOptions).ConfigureAwait(false);

推荐答案

该问题是由于部署的服务器没有互联网访问权限,而 PuppeteerSharp 正在寻找通过指定本地执行路径来下载 Chromium 解决的问题.

The issue was due to the fact that the server being deployed to did not have internet access and PuppeteerSharp was looking to download Chromium resolved by specifying a local execution path.

ExecutablePath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

ExecutablePath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

修改后的代码

var url = ConfigurationManager.AppSettings["EnrolmentFormUrl"] + "?code=" + code;

var fileName = "enrolment" + $"{DateTime.Now:__ddMMyyyyhhmmssfff}" + ".pdf";

var output = Config.attachmentPath + fileName;                     

var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    TransportFactory = AspNetWebSocketTransport.AspNetTransportFactory,
    ExecutablePath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
}).ConfigureAwait(false);

var pdfOptions = new PdfOptions
{
    Format = PaperFormat.A4,
    PreferCSSPageSize = true
};

var page = await browser.NewPageAsync();
await page.GoToAsync(url).ConfigureAwait(false);
await page.PdfAsync(output, pdfOptions).ConfigureAwait(false);

这篇关于IIS 中的 PuppeteerSharp - ASP.NET Web 窗体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆