IRONSOFTWAREHOME

gRPC-Verbindungsfehler in IronPDF Azure-Containern

Curtis Chau
Curtis Chau
Updated: 10. Juni 2026

Wenn IronPDF in Docker-Containern auf Azure Container Instances oder Azure App Service bereitgestellt wird, kann die gRPC-Kommunikation zwischen der Anwendung und der IronPDF-Engine fehlschlagen. Dies passiert am häufigsten, nachdem ein Container in den Ruhezustand wechselt oder neu gestartet wird, oder wenn der gRPC-Kanal nicht mit einer Wiederholungslogik konfiguriert ist.

Grpc.Core.RpcException: Status(StatusCode="Unavailable", Detail="failed to connect to all addresses")
Text
Status(StatusCode="Unknown", Detail="Stream removed")
Text

Diese Fehler treten auf, weil Azure-Containerumgebungen Container während Leerlaufzeiten herunterfahren oder recyceln können. Ohne eine Wiederholungsrichtlinie auf dem gRPC-Kanal führt eine einzelne abgebrochene Verbindung dazu, dass der Aufruf sofort fehlschlägt, anstatt sich erneut zu verbinden. HTTP/2-Stream-Schließungen und plattformabhängige Kanalsetup-Ungleichheiten können ebenfalls diese Fehler verursachen.

Lösung

1. Setzen Sie die Container-Neustartrichtlinie auf Immer

Setzen Sie bei Azure Container Instances die Neustartrichtlinie auf Always. Bei Azure App Service verwenden Sie einen dedizierten Plan (Basic B1 oder höher) anstelle des Consumption-Plans, der auf Null skaliert und Container beendet. Für Arbeitslasten, die persistente Verbindungen erfordern, sind von Kubernetes verwaltete Container eine stabilere Option.

2. Konfigurieren Sie die gRPC-Wiederholungslogik

Wählen Sie den Ansatz, der zu Ihrem Ziel-Framework passt.

Für .NET Framework: verwenden Sie Grpc.Core.Channel mit einer JSON-Wiederholungsrichtlinie

using Grpc.Core;
using IronPdf.GrpcLayer;

string jsonString = @"
{
    ""methodConfig"": [
        {
            ""name"": [
                {
                    ""service"": ""ironpdfengineproto.IronPdfService""
                }
            ],
            ""retryPolicy"": {
                ""maxAttempts"": 5,
                ""initialBackoff"": ""1.0s"",
                ""maxBackoff"": ""30s"",
                ""backoffMultiplier"": 1.5,
                ""retryableStatusCodes"": [
                    ""UNAVAILABLE""
                ]
            }
        }
    ]
}";

var channel = new Channel("localhost:33350", ChannelCredentials.Insecure,
    new[]
    {
        new ChannelOption("grpc.service_config", jsonString)
    });

IronPdf.Installation.ConnectToIronPdfHost(
    IronPdfConnectionConfiguration.WithCustomChannel(channel)
);

Für .NET Core / .NET 5+: verwenden Sie Grpc.Net.Client.GrpcChannel mit RetryPolicy

using Grpc.Net.Client;
using Grpc.Net.Client.Configuration;
using IronPdf.GrpcLayer;
using Grpc.Core;

var retryPolicy = new RetryPolicy
{
    MaxAttempts = 5,
    InitialBackoff = TimeSpan.FromSeconds(1),
    MaxBackoff = TimeSpan.FromSeconds(30),
    BackoffMultiplier = 1.5,
    RetryableStatusCodes = { StatusCode.Unavailable }
};

var methodConfig = new MethodConfig
{
    Names = { MethodName.Default },
    RetryPolicy = retryPolicy
};

var channel = GrpcChannel.ForAddress("http://localhost:33350", new GrpcChannelOptions
{
    ServiceConfig = new ServiceConfig { MethodConfigs = { methodConfig } }
});

IronPdf.Installation.ConnectToIronPdfHost(
    IronPdfConnectionConfiguration.WithCustomChannel(channel)
);

3. Nutzen Sie RemoteServer für einfachere Konfiguration

Wenn Sie keine benutzerdefinierten Kanaloptionen benötigen, bietet RemoteServer integrierte Wiederholungsunterstützung und ist der empfohlene Ausgangspunkt für die meisten Azure-Containerbereitstellungen. Verwenden Sie dies anstelle von .Docker(), wenn sich die Engine- und Anwendung-Container nicht im selben lokalen Netzwerk befinden. Für die vollständige Verbindungskonfigurationsreferenz siehe den IronPDF Engine Guide.

IronPdf.Installation.ConnectToIronPdfHost(
    IronPdfConnectionConfiguration.RemoteServer("http://your-container-host:33350")
);

4. Verhindern Sie das Herunterfahren der Engine zwischen Anfragen

Standardmäßig fährt IronPDF seine Engine zwischen Anfragen herunter. Indem Sie SkipShutdown auf true setzen, bleibt der Engine-Prozess aktiv, wodurch die Wiederverbindungsüberlastung vermieden und die Wahrscheinlichkeit von Verbindungsfehlern in langlaufenden Containern verringert wird.

IronPdf.Installation.SkipShutdown = true;

Debug-Tipps

Um detaillierte gRPC-Diagnoseausgaben zu erhalten, setzen Sie die folgenden Umgebungsvariablen in Ihrer Dockerfile oder Containerkonfiguration:

ENV GRPC_TRACE=all
ENV GRPC_VERBOSITY=DEBUG
Text

Prüfen Sie cef.log und IronSoftware.log für zusätzliche Details zu Verbindungsfehlern. Um zu erfahren, wie Sie Protokolldateien von Azure abrufen, siehe Azure-L Protokolldateien.

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 Handbücher.

...
Weiterlesen

Bereit anzufangen?

Nuget Downloads 20,878,335Version:2026.9gerade veröffentlicht

Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
C# NuGet-Bibliothek für PDF
Installation mit NuGet

Version: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Rechtsklick auf Referenzen, NuGet-Pakete verwalten
  2. Wählen Sie Durchsuchen und suchen Sie nach 'IronPDF'
  3. Paket auswählen und installieren
C# PDF DLL
Download DLL

Version: 2026.9

oder laden Sie den Windows-Installer hier herunter.

  1. Laden Sie IronPDF herunter und entpacken Sie es in ein Verzeichnis wie ~/Libs innerhalb Ihres Lösungsverzeichnisses
  2. Im Visual Studio-Projektmappen-Explorer klicken Sie mit der rechten Maustaste auf Referenzen. Wählen Sie Durchsuchen, "IronPDF.dll"

Lizenzen ab 749 $

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.