System.Environment.FailFast with ReadyToRun

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

.NET应用程序在第一次接触IronPDF类时崩溃,通过System.Environment.FailFast终止,在启动或早期初始化期间。 应用程序在使用ReadyToRun(R2R)编译发布时,这种提前一步通常是原因。 您让应用程序保持ReadyToRun状态,并将IronPdf.dll排除在外。

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[])

ReadyToRun提前编译程序集以加快启动速度。在某些环境中,这一提前一步会干扰依赖于运行时初始化行为的库,其中包括IronPDF。 该过程可能会在非常早的阶段失败,通常在任何IronPDF日志可用之前,因此在崩溃之前不会写入日志。

此问题仅在部署环境中出现,通常是针对win-x64的Windows(包括Windows Server)上托管的ASP.NET Core或IIS应用程序中出现。 同一台机器在IIS内部和外部的行为可能不同。 一个已确认的生产案例在AWS EC2的Windows Server 2025 Datacenter上运行IronPDF 2026.4.1,一个在IIS (w3wp.exe)下的ASP.NET Core Web应用程序,使用.NET 10。

解决方案

1. 保持启用ReadyToRun

没有必要完全禁用ReadyToRun。 如果您的应用程序依赖于此,请保留该属性:

<PropertyGroup>
  <PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
<PropertyGroup>
  <PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
XML

2. 将IronPdf.dll排除在ReadyToRun编译之外

在您的.csproj中添加排除项:

<ItemGroup>
  <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
  <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
XML

这条单行恢复了正常行为:它让应用程序的其余部分R2R编译,同时让IronPDF在运行时按预期初始化。

注意使用显示的确切语法。 不要将排除放在另一个<PublishReadyToRunExclude>容器块内。

3. 完整的.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>
XML

4. 重新发布和重新部署

更新项目文件后,推送新的构建:

  1. 重新构建应用程序。
  2. 为您打算的运行时重新发布它,例如win-x64
  3. 重新部署更新后的构建。
  4. 重启IIS站点或回收应用程序池。
  5. 再次测试相同的IronPDF代码路径。

在确认的生产案例中,将System.Environment.FailFast崩溃,应用程序在IIS下正常运行。

何时尝试此修复

当症状对齐时,请尝试使用此修复:

  • PublishReadyToRun=true: 已在发布的应用程序上启用了ReadyToRun。
  • 首次调用崩溃:故障发生在首次触碰IronPDF类时。
  • 启动时机:错误在启动或早期静态初始化期间出现。
  • 已部署的Windows主机:应用程序运行在IIS或另一个已部署的Windows环境下。

有关完整指导,请参见与IronPDF一起使用ReadyToRun

Curtis Chau
技术作家

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

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

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

还在滚动吗?

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