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のログ記録が利用可能になる前であることが多く、クラッシュ前にログが書き込まれない理由です。

この問題は、展開された環境でのみ発生し、通常は ASP.NET Core または win-x64 をターゲットとした Windows (Windows Server を含む) でホストされている IIS アプリで発生します。 同じマシンがIIS内と外では異なる動作をすることがあります。 確認された本番ケースでは、IronPDF 2026.4.1 を .NET 10、IIS で動作する ASP.NET Core Web アプリで、AWS EC2 上の Windows Server 2025 Datacenter で実行しました。

解決策

1. ReadyToRunを有効に保つ

ReadyToRunを完全に無効にする必要はありません。 アプリケーションがそれに依存している場合、プロパティをそのままにしておきます。

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

2. ReadyToRun コンパイルから IronPdf.dll を除外します

除外をあなたの .csproj に追加してください:

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

この1行だけで通常の動作を回復します:アプリケーションの他の部分は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コードパスを再テストします。

確認された本番ケースでは、ReadyToRun コンパイルから IronPdf.dll を除外することで、System.Environment.FailFast クラッシュが解消され、IIS の下で通常通りアプリが動作しました。

この修正を試すべきとき

症状が一致するときに試してください:

  • PublishReadyToRun=true: 公開されたアプリで ReadyToRun が有効になっています。
  • 初回呼び出しでクラッシュ:IronPDFクラスに触れた瞬間に失敗が発生します。
  • スタートアップタイミング:エラーは起動中または初期の静的初期化中に発生します。
  • デプロイ済みのWindowsホスト:アプリはIISまたは他のデプロイ済みWindows環境下で動作しています。

完全なガイダンスはIronPDFとReadyToRunの使用を参照してください。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 20,296,129 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronPdf
サンプルを実行するHTML が PDF に変換されるのを確認します。