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

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

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

...
閱讀更多

準備開始了嗎?

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起