添加HtmlRenderer.PdfSharp后Azure函数加载指定程序集失败
问题解决:Azure Functions中添加HtmlRenderer.PdfSharp后出现System.Threading.AccessControl缺失错误
问题原因
你遇到的错误是因为HtmlRenderer.PdfSharp(版本1.5.0.6)依赖的底层组件引用了System.Threading.AccessControl程序集,而Azure Functions的.NET 6运行环境默认没有包含这个程序集——即使你没有直接调用GeneratePdf函数,程序集加载逻辑在扫描依赖时也会触发这个缺失检查。
解决方案
1. 手动安装System.Threading.AccessControl NuGet包
直接在项目中添加这个缺失的程序集引用:
Install-Package System.Threading.AccessControl -Version 6.0.0
或者在项目文件中添加PackageReference节点:
<PackageReference Include="System.Threading.AccessControl" Version="6.0.0" />
选择与.NET 6兼容的版本即可,安装后重新构建并运行函数,错误应该会消失。
2. 替换为.NET Core兼容的PDF生成库(可选)
HtmlRenderer.PdfSharp 1.5.0.6是较旧版本,主要针对.NET Framework设计,和.NET 6的Azure Functions环境可能存在潜在兼容性问题。如果安装上述包后仍有其他问题,可以考虑替换为更适配的库:
- PdfSharpCore:PdfSharp的.NET Core移植版,搭配
HtmlRenderer.PdfSharpCore使用,完全兼容.NET 6 - DinkToPdf:基于wkhtmltopdf的.NET Core包装器,支持HTML转PDF(注意需部署对应平台的原生wkhtmltopdf文件)
- iTextSharp.LGPLv2.Core:开源PDF生成库,支持HTML转PDF功能
3. 确保依赖项被正确复制到输出目录
在项目文件的<PropertyGroup>节点中添加以下配置,避免发布到Azure时丢失依赖:
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
内容的提问来源于stack exchange,提问作者Ruben
相关产品推荐
相关产品推荐

