System.Environment.FailFast with ReadyToRun

This article was translated from English: Does it need improvement?
Translated
View the article in English

Une application .NET plante dès qu'elle touche une classe IronPDF, se terminant par System.Environment.FailFast au démarrage ou pendant l'initialisation précoce. Lorsque l'application est publiée avec la compilation ReadyToRun (R2R), cette étape anticipée est généralement la cause. Vous gardez ReadyToRun activé pour l'application et excluez IronPdf.dll de celle-ci.

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 compile les assemblées à l'avance pour accélérer le démarrage. Dans certains environnements, cette étape anticipée interfère avec les bibliothèques qui dépendent d'un comportement d'initialisation à l'exécution, IronPDF parmi elles. Le processus peut échouer très tôt, souvent avant que tout journal IronPDF ne soit disponible, c'est pourquoi aucun journal n'est écrit avant le plantage.

Ce problème n'apparaît que dans l'environnement déployé, généralement des applications hébergées sur ASP.NET Core ou IIS sous Windows (y compris Windows Server) ciblant win-x64. La même machine peut se comporter différemment à l'intérieur d'IIS qu'à l'extérieur. Un cas de production confirmé a exécuté IronPDF 2026.4.1 sur .NET 10, une application web ASP.NET Core sous IIS (w3wp.exe), sur Windows Server 2025 Datacenter sur AWS EC2.

Solution

1. Conservez ReadyToRun activé

Il n'est pas nécessaire de désactiver complètement ReadyToRun. Si votre application en dépend, laissez la propriété en place :

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

2. Exclure IronPdf.dll de la compilation ReadyToRun

Ajoutez l'exclusion à votre .csproj :

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

Cette seule ligne est ce qui rétablit le comportement normal : elle laisse le reste de l'application compilé R2R tout en permettant à IronPDF de s'initialiser à l'exécution comme il l'attend.

PrudenceUtilisez la syntaxe exacte montrée. Ne pas envelopper l'exclusion à l'intérieur d'un autre bloc <PublishReadyToRunExclude>.

3. Exemple complet de .csproj

Un fichier de projet fonctionnel ressemble à ceci :

<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. Republier et redéployer

Avec le fichier de projet mis à jour, poussez une nouvelle construction :

  1. Reconstruisez l'application.
  2. Republiez-le pour votre runtime souhaité, tel que win-x64.
  3. Redéployez la version mise à jour.
  4. Redémarrez le site IIS ou recyclez le pool d'applications.
  5. Testez encore le même chemin de code IronPDF.

Dans le cas de production confirmé, exclure IronPdf.dll de la compilation ReadyToRun a éliminé le crash System.Environment.FailFast et l'application a fonctionné normalement sous IIS.

Quand essayer cette correction

Choisissez cette option lorsque les symptômes s'alignent :

  • PublishReadyToRun=true: ReadyToRun est activé sur l'application publiée.
  • Le premier appel plante : l'échec survient au moment où une classe IronPDF est touchée.
  • Timing du démarrage : l'erreur apparaît pendant le démarrage ou l'initialisation statique précoce.
  • Hôte Windows déployé : l'application s'exécute sous IIS ou un autre environnement Windows déployé.

Pour des conseils complets, consultez Using ReadyToRun with IronPDF.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer ?
Nuget Téléchargements 20,296,129 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronPdf
exécuter un échantillon Regardez votre code HTML se transformer en PDF.