使用 ReadyToRun 或 Ahead-Of-Time (AOT) 编译
.NET ReadyToRun (R2R) 是一种预先(AOT)编译形式。
在部署期间启用 ReadyToRun 编译可能会违反篡改保护,并导致以下异常情况:
Exception: Unhandled exception. IronSoftware.Exceptions.LicensingException: IronPdf, Version=2024.2.0.2, Culture=neutral, PublicKeyToken=94e1c31412563c75 assembly is not authentic. Please try to reinstall the nuget package
at IronPdf.PdfDocument.uswvws(Boolean vhfwdf)
at IronPdf.PdfDocument.get_BinaryData()
at IronPdf.PdfDocument.SaveAs(String FileName, Boolean SaveAsRevision)
at Program.<Main>(String[] args) in C:\csharppro\aottest\aottest\Program.cs:line 5
原因
根据微软文档,SDK 会预编译与应用程序一起分发的程序集。 对于自包含应用程序,这组程序集将包括框架。 重要的是要注意,C++/CLI 二进制文件不适合 ReadyToRun 编译。
解决方案
要从ReadyToRun处理中排除特定程序集,请在您的项目文件中使用IronPdf.dll程序集:
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
此XML片段应添加到您的项目文件(.csproj)中,以防止指定的程序集被ReadyToRun预编译,从而避免潜在的许可或篡改问题。
首次IronPDF调用时的System.Environment.FailFast
在某些Windows部署中,IronPDF在第一次IronPDF调用时立即崩溃进程,没有应用程序级日志输出。 Windows事件日志记录的条目类似于:
The application requested process termination through System.Environment.FailFast.
Message: Stack: at System.Environment.FailFast(System.String)
at <Module>..cctor()
at Program.<Main>$(System.String[])
这与上面的授权异常不同。 崩溃发生在静态初始化期间,正常日志记录不可用,因此在进程终止之前不会出现IronPDF日志行。
该模式已在启用PublishReadyToRun的Windows Server上托管的ASP.NET Core应用程序中得到确认。 它已在以下设备上重现:
- IronPDF 2026.4.1
- .NET 10
- Windows Server 2025 Datacenter上的IIS(
w3wp.exe) - AWS EC2
win-x64发布目标
解决方案
保留应用程序的IronPdf.dll:
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
一个完整的.csproj示例:
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="IronPdf" Version="2026.4.1" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="IronPdf" Version="2026.4.1" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
更新.csproj后,重新发布应用程序,重新部署,并重启IIS站点或回收应用程序池。

