System.Environment.FailFast with ReadyToRun
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>
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>
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.
<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>
4. Republier et redéployer
Avec le fichier de projet mis à jour, poussez une nouvelle construction :
- Reconstruisez l'application.
- Republiez-le pour votre runtime souhaité, tel que
win-x64. - Redéployez la version mise à jour.
- Redémarrez le site IIS ou recyclez le pool d'applications.
- 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.

