在Azure Linux上使用WEBSITE_RUN_FROM_PACKAGE部署IronPDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

在Azure Linux应用服务上使用IronPDF部署.NET API时启用WEBSITE_RUN_FROM_PACKAGE,Chrome渲染器无法部署,应用程序在启动时抛出错误。

Error while deploying IronPdf Chrome renderer: 'Multiple issues occurred while trying to deploy Chrome (libatk-1.0.so.0: cannot open shared object file: No such file or directory) (IronInterop.so: cannot open shared object file: No such file or directory) (Read-only file system: '/home/site/wwwroot/runtimes')'

当设置/home/site/wwwroot目录变为只读。 IronPDF需要在启动时将本机Chrome渲染器的二进制文件和运行时库提取到可写位置,因此只读限制阻碍了部署。 此外,Azure的默认Linux环境可能未预安装所需的系统库,从而导致缺少共享对象错误。

解决方案

根据您的部署限制,有三种可用的选项。

选项 1:通过SSH安装缺少的依赖项

通过SSH访问App Service并运行以下命令以安装所需的系统库:

apt update
apt install -y libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 \
  libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 \
  libxkbcommon-x11-0 libxrender1 libfontconfig1 libxshmfence1
apt update
apt install -y libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 \
  libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 \
  libxkbcommon-x11-0 libxrender1 libfontconfig1 libxshmfence1
SHELL

这是一个临时修复。 以这种方式安装的软件包在重启后不会保留,不适用于有出站防火墙限制的生产环境。 有关各Linux发行版所需软件包的完整列表,请参阅Linux部署指南

选项 2:使用自定义Docker容器(推荐用于Linux)

基于Ubuntu或Debian构建自定义Docker镜像,使用IronPdf.Native.Chrome.Linux NuGet包。该方法为渲染器提供可写文件系统和镜像构建时预安装的依赖项。

将匹配的NuGet包添加到您的.csproj中:

<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
XML

确保IronPdf包版本匹配。 在项目中包含原生包可防止IronPDF尝试运行时下载,这将在只读或网络限制环境中失败。

有关完整的Dockerfile示例,请参阅IronPDF Docker指南

选项 3:迁移到Windows App Service

Windows应用服务对于WEBSITE_RUN_FROM_PACKAGE没有相同的文件系统权限限制。 IronPDF的Windows运行时库得到本机支持,可以毫无问题地提取。 迁移到Windows App Service可以完全消除根本原因。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 20,088,359 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。