System.Environment.FailFast with ReadyToRun
.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 記錄可用之前,因此在崩潰前沒有寫入日誌。
此問題僅在部署的環境中顯示,通常是在 Windows(包括 Windows Server)上針對 win-x64 的 ASP.NET Core 或 IIS 託管應用中。 同一台機器在 IIS 內時可能會表現不同於在外部。 一個已確認的生產案例在 AWS EC2 上的 Windows Server 2025 Datacenter 上運行於 .NET 10 的 IronPDF 2026.4.1,一個在 IIS 上的 ASP.NET Core 網頁應用 (w3wp.exe)。
解決方案
1. 保持啟用 ReadyToRun
無需完全禁用 ReadyToRun。 如果您的應用程式依賴於它,保留該屬性:
<PropertyGroup>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
<PropertyGroup>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
2. 從 ReadyToRun 編譯中排除 IronPdf.dll
將排除項新增到您的 .csproj:
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
這一行單獨恢復了正常行為:它讓其他應用程式保持 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>
4. 重新發布並重新部署
隨著項目檔案更新,推送一個最新的構建:
- 重新構建應用程式。
- 重新發布為您預期的運行時,例如
win-x64。 - 重新部署更新的構建。
- 重新啟動 IIS 站點或回收應用程式池。
- 再次測試相同的 IronPDF 程式碼路徑。
在確認的生產案例中,從 ReadyToRun 編譯中排除 IronPdf.dll 消除了 System.Environment.FailFast 崩潰,應用程式在 IIS 下正常運行。
何時嘗試此修復
當症狀一致時請採用此方法:
PublishReadyToRun=true: 發佈的應用已啟用 ReadyToRun。- 首次呼叫崩潰: 當 IronPDF 類別被接觸時立即發生錯誤。
- 啟動時機: 錯誤出現在啟動或早期靜態初始化期間。
- 部署的 Windows 主機: 應用程式運行在 IIS 或其他部署 Windows 環境下。
有關完整指南,請參見 使用 ReadyToRun 與 IronPDF。

