System.Environment.FailFast with ReadyToRun

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

Aplikacja .NET ulega awarii w momencie, gdy po raz pierwszy dotyka klasy IronPDF, kończąc działanie przez System.Environment.FailFast przy uruchamianiu lub we wczesnej fazie inicjalizacji. Gdy aplikacja jest publikowana z kompilacją ReadyToRun (R2R), to kroki podejmowane z wyprzedzeniem zwykle są przyczyną. Pozostawiasz ReadyToRun dla aplikacji i wykluczasz z niego 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 kompiluje zestawy z wyprzedzeniem, aby przyspieszyć start. W niektórych środowiskach ten krok z wyprzedzeniem zakłóca działania bibliotek, które polegają na zachowaniu inicjalizacji w czasie wykonania, w tym IronPDF. Proces może się nie udać bardzo wcześnie, często zanim jakiekolwiek logi IronPDF są dostępne, dlatego przed awarią nie są zapisywane żadne logi.

Ten problem pojawia się tylko w wdrożonym środowisku, zazwyczaj w aplikacjach ASP.NET Core lub hostowanych na IIS na Windows (w tym Windows Server) celujących w win-x64. Ta sama maszyna może zachowywać się różnie wewnątrz IIS niż na zewnątrz. Potwierdzony przypadek produkcyjny uruchomił IronPDF 2026.4.1 na .NET 10, w aplikacji webowej ASP.NET Core pod IIS (w3wp.exe) na Windows Server 2025 Datacenter na AWS EC2.

Rozwiązanie

1. Zachowaj włączone ReadyToRun

Nie ma potrzeby całkowitego wyłączania ReadyToRun. Jeśli twoja aplikacja na nim polega, pozostaw właściwość w miejscu:

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

2. Wyklucz IronPdf.dll z kompilacji ReadyToRun

Dodaj wykluczenie do swojego .csproj:

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

Ta pojedyncza linia przywraca normalne zachowanie: pozostawia resztę aplikacji z kompilacją R2R, a jednocześnie pozwala na inicjalizację IronPDF w czasie wykonywania, jak się spodziewa.

UwagaUżyj dokładnie przedstawionej składni. Nie zamykaj wykluczenia w innej bloku kontenera <PublishReadyToRunExclude>.

3. Pełny przykład .csproj

Plik projektu wygląda w ten sposób:

<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. Opublikuj i wdroż ponownie

Po zaktualizowaniu pliku projektu, wykonaj nową kompilację:

  1. Przebuduj aplikację.
  2. Ponownie opublikuj ją dla zamierzonego środowiska wykonawczego, na przykład win-x64.
  3. Wdróż zaktualizowaną kompilację.
  4. Uruchom ponownie witrynę IIS lub zresetuj pulę aplikacji.
  5. Przetestuj ponownie ten sam kod IronPDF.

W potwierdzonym przypadku produkcyjnym, wykluczenie IronPdf.dll z kompilacji ReadyToRun wyeliminowało awarię System.Environment.FailFast i aplikacja działała normalnie pod IIS.

Kiedy wypróbować tę poprawkę

Sięgnij po to, gdy objawy się zgadzają:

  • PublishReadyToRun=true: ReadyToRun jest włączone w opublikowanej aplikacji.
  • Awaria przy pierwszym wywołaniu: awaria występuje w momencie, gdy dotknięty zostanie klasa IronPDF.
  • Timing uruchamiania: błąd pojawia się podczas uruchamiania lub wczesnej statycznej inicjalizacji.
  • Wdrożone hosty Windows: aplikacja działa pod IIS lub innym wdrożonym środowiskiem Windows.

Dla pełnego przewodnika, zobacz Korzystanie z ReadyToRun z IronPDF.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 20,296,129 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.