IRONSOFTWAREHOME

System.Environment.FailFast with ReadyToRun

Curtis Chau
Curtis Chau
Updated: 2026年6月29日

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

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>
XML

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

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

<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>
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。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

准备开始了吗?

Nuget Downloads 21,105,021版本:2026.9刚刚发布

立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起

Key in blue circle

立即获取免费的 30 天试用版密钥。

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起