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 記錄可用之前,因此在崩潰前沒有寫入日誌。

此問題僅在部署的環境中顯示,通常是在 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>
XML

2. 從 ReadyToRun 編譯中排除 IronPdf.dll

將排除項新增到您的 .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 程式碼路徑。

在確認的生產案例中,從 ReadyToRun 編譯中排除 IronPdf.dll 消除了 System.Environment.FailFast 崩潰,應用程式在 IIS 下正常運行。

何時嘗試此修復

當症狀一致時請採用此方法:

  • PublishReadyToRun=true: 發佈的應用已啟用 ReadyToRun。
  • 首次呼叫崩潰: 當 IronPDF 類別被接觸時立即發生錯誤。
  • 啟動時機: 錯誤出現在啟動或早期靜態初始化期間。
  • 部署的 Windows 主機: 應用程式運行在 IIS 或其他部署 Windows 環境下。

有關完整指南,請參見 使用 ReadyToRun 與 IronPDF。

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

閱讀更多

準備開始了嗎?

Nuget Downloads 22,024,882版本:2026.11剛剛發布