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

已发布的Linux版.NET Core Azure App Service无权限操作puppeteer-sharp相关文件

问题根因

Azure Linux App Service 使用官方预制.NET Core 容器运行应用时,应用部署目录、系统默认临时目录均为只读挂载分区。Puppeteer Sharp 默认会将Chrome内核下载到当前程序运行目录或系统临时目录,写入操作触发只读文件系统报错,你无需尝试修改Web.dll的权限,该文件权限为系统默认配置,不影响业务运行。

解决方案

按以下步骤修改即可正常运行:

  1. 修改Puppeteer Sharp缓存路径
    将Chrome下载路径指定到Azure App Service唯一的可写持久化分区/home下,代码配置示例如下:
// 全局配置Puppeteer Sharp默认下载路径
BrowserFetcher.DefaultOptions.Path = "/home/puppeteer-chrome-cache";

// 下载Chrome逻辑和原有逻辑保持一致即可
var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();
  1. 添加Chrome启动参数
    Linux容器环境下需关闭Chrome沙箱机制避免启动失败,启动浏览器时增加以下配置:
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    // 关闭沙箱适配容器环境
    Args = new string[] { "--no-sandbox", "--disable-setuid-sandbox" }
});
  1. 可选:补充Chrome运行依赖(按需操作)
    如果启动时提示缺少运行依赖,可在Azure App Service配置页的「启动命令」栏填写以下命令,启动时自动安装缺失依赖:
apt update && apt install -y libx11-xcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxi6 libxrender1 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libgtk-3-0 && dotnet Web.dll

如果对启动速度有要求,可自行构建包含Chrome和依赖的自定义镜像,替换官方预制容器镜像即可。

内容的提问来源于stack exchange,提问作者Imran Sh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:15:06