You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotly.NET在无网络服务器调用ToBase64JPGString报错,如何配置本地渲染?

解决Plotly.NET离线服务器生成图片的依赖问题

问题根源

调用GenericChart.ToBase64JPGString时,Plotly.NET的ImageExport模块依赖PuppeteerSharp,默认会自动联网下载无头Chrome浏览器,离线服务器无法访问外网导致403错误。

解决步骤

1. 提前获取无头Chrome/Chromium二进制文件

在有网络的环境中完成以下任一操作:

  • 用PuppeteerSharp下载:运行临时代码获取对应版本的浏览器:
using PuppeteerSharp;

var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();
// 下载路径默认在用户目录下的.puppeteerSharp文件夹,找到对应系统的浏览器文件
  • 直接下载离线包:从Chrome官方下载对应服务器系统(Windows/Linux/ARM等)的Chrome或Chromium离线安装包,解压后提取浏览器可执行文件(如Windows的chrome.exe、Linux的chrome)。

2. 配置Plotly.NET使用本地浏览器

在服务器代码中,指定PuppeteerSharp使用预下载的本地浏览器路径,禁用自动下载:

using Plotly.NET;
using Plotly.NET.ImageExport;
using PuppeteerSharp;

// 初始化浏览器启动选项,替换为服务器上的实际路径
var launchOptions = new LaunchOptions
{
    ExecutablePath = "/opt/chrome/chrome",
    Headless = true,
    Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" } // Linux环境需添加该参数
};

// 配置Plotly.NET渲染器使用自定义选项
PuppeteerSharpRenderer.SetOptions(launchOptions);

// 正常生成图片
var chart = Chart.Line<int, int, string>(new[] { (1, 2), (3, 4) });
var base64Jpg = chart.ToBase64JPGString();

3. 服务器环境适配

  • Linux服务器:安装Chrome运行所需依赖库,否则浏览器无法启动:
# Ubuntu/Debian 示例
sudo apt-get update && sudo apt-get install -y libatk1.0-0 libatk-bridge2.0-0 libcups2 libxss1 libxcomposite1 libasound2 libpangocairo-1.0-0 libgtk-3-0
  • 权限配置:确保浏览器可执行文件有运行权限:
chmod +x /opt/chrome/chrome

内容的提问来源于stack exchange,提问作者Jeff Hornby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 16:30:04