System.Environment.FailFast with ReadyToRun

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

Eine .NET-Anwendung stürzt ab, sobald sie erstmals eine IronPDF-Klasse berührt, und beendet sich durch System.Environment.FailFast beim Start oder während der frühen Initialisierung. Wenn die App mit der ReadyToRun (R2R)-Kompilierung veröffentlicht wird, wird dieser ahead-of-time-Schritt normalerweise die Ursache sein. Sie halten ReadyToRun für die Anwendung an und schließen IronPdf.dll davon aus.

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 kompiliert Assemblies im Voraus, um den Start zu beschleunigen. In einigen Umgebungen stört dieser ahead-of-time-Schritt Bibliotheken, die von einer Laufzeit-Initialisierungsverhalten abhängen, einschließlich IronPDF. Der Prozess kann sehr früh fehlschlagen, oft bevor irgendwelche IronPDF-Protokollierung verfügbar ist, weshalb keine Protokolle vor dem Absturz geschrieben werden.

Dieses Problem tritt nur in der bereitgestellten Umgebung auf, typischerweise ASP.NET Core oder unter IIS gehosteten Anwendungen auf Windows (einschließlich Windows Server), die auf win-x64 abzielen. Die gleiche Maschine kann sich innerhalb von IIS anders verhalten als außerhalb davon. Ein bestätigter Produktionsfall führte IronPDF 2026.4.1 auf .NET 10 aus, eine ASP.NET Core-Webanwendung unter IIS (w3wp.exe), auf Windows Server 2025 Datacenter auf AWS EC2.

Lösung

1. Halten Sie ReadyToRun aktiviert

Es gibt keinen Grund, ReadyToRun komplett zu deaktivieren. Wenn Ihre Anwendung darauf angewiesen ist, lassen Sie die Eigenschaft in Kraft:

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

2. Schließen Sie IronPdf.dll von der ReadyToRun-Kompilierung aus

Fügen Sie den Ausschluss zu Ihrem .csproj hinzu:

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

Diese einzelne Zeile ist das, was das normale Verhalten wiederherstellt: Sie lässt den Rest der App R2R-kompiliert, während sie IronPDF zur Laufzeit initialisieren lässt, wie es erwartet wird.

VorsichtVerwenden Sie die genau gezeigte Syntax. Wickeln Sie den Ausschluss nicht in einen anderen <PublishReadyToRunExclude>-Containerblock.

3. Vollständiges .csproj-Beispiel

Eine funktionierende Projektdatei sieht so aus:

<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. Erneut veröffentlichen und bereitstellen

Mit der aktualisierten Projektdatei schieben Sie einen neuen Build:

  1. Bauen Sie die Anwendung neu.
  2. Veröffentlichen Sie es erneut für Ihre beabsichtigte Laufzeitumgebung, wie zum Beispiel win-x64.
  3. Stellen Sie den aktualisierten Build bereit.
  4. Starten Sie die IIS-Website neu oder recyceln Sie den Anwendungs-Pool.
  5. Testen Sie den gleichen IronPDF-Codepfad erneut.

Im bestätigten Produktionsfall beseitigte das Ausschließen von IronPdf.dll aus der ReadyToRun-Kompilierung den System.Environment.FailFast-Absturz und die Anwendung lief normal unter IIS.

Wann diese Lösung ausprobieren

Greifen Sie darauf zu, wenn die Symptome übereinstimmen:

  • PublishReadyToRun=true: ReadyToRun ist auf der veröffentlichten App aktiviert.
  • Erster Aufruf stürzt ab: Der Fehler tritt auf, sobald eine IronPDF-Klasse berührt wird.
  • Startzeitpunkt: Der Fehler erscheint während des Starts oder der frühen statischen Initialisierung.
  • Bereitgestellter Windows-Host: Die App läuft unter IIS oder einer anderen bereitgestellten Windows-Umgebung.

Für vollständige Anleitungen siehe Verwendung von ReadyToRun mit IronPDF.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 20,296,129 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPdf
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.