IRONSOFTWAREHOME

Erreurs de connexion gRPC dans les conteneurs Azure d'IronPDF

Curtis Chau
Curtis Chau
Updated: 10 juin 2026

Lorsque IronPDF est déployé dans des conteneurs Docker sur Azure Container Instances ou Azure App Service, la communication gRPC entre l'application et le moteur IronPDF peut échouer. Cela survient le plus souvent après qu'un conteneur soit inactif ou redémarré, ou lorsque le canal gRPC n'est pas configuré avec une logique de nouvelle tentative.

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

Ces erreurs se produisent parce que les environnements de conteneurs Azure peuvent arrêter ou recycler les conteneurs durant les périodes d'inactivité. Sans une politique de nouvelle tentative sur le canal gRPC, une seule connexion interrompue entraîne l'échec immédiat de l'appel au lieu de se reconnecter. La fermeture de flux HTTP/2 et les incompatibilités de configuration de canal spécifiques à la plateforme peuvent également produire ces erreurs.

Solution

1. Définir la politique de redémarrage du conteneur sur Toujours

Sur Azure Container Instances, définissez la politique de redémarrage sur Always. Sur Azure App Service, utilisez un plan dédié (Basic B1 ou supérieur) plutôt que le plan Consumption, qui s'adapte à zéro et termine les conteneurs. Pour les charges de travail nécessitant des connexions persistantes, les conteneurs gérés par Kubernetes sont une option plus stable.

2. Configurer la logique de nouvelle tentative gRPC

Choisissez l'approche qui correspond à votre framework cible.

Pour .NET Framework : utilisez Grpc.Core.Channel avec une politique de nouvelle tentative JSON

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)
);

Pour .NET Core / .NET 5+ : utilisez Grpc.Net.Client.GrpcChannel avec 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. Utiliser RemoteServer pour une configuration plus simple

Si vous n'avez pas besoin d'options de canal personnalisées, RemoteServer offre un support de nouvelle tentative intégré et constitue le point de départ recommandé pour la plupart des déploiements de conteneurs Azure. Utilisez ceci au lieu de .Docker() lorsque les conteneurs du moteur et de l'application ne sont pas sur le même réseau local. Pour la référence complète de la configuration de la connexion, consultez le guide du moteur IronPDF.

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

4. Empêcher l'arrêt du moteur entre les requêtes

Par défaut, IronPDF éteint son moteur entre les requêtes. Définir SkipShutdown sur true maintient le processus du moteur actif, ce qui évite le surcoût de reconnexion et réduit la probabilité d'erreurs de connexion dans les conteneurs de longue durée.

IronPdf.Installation.SkipShutdown = true;

Conseils de débogage

Pour obtenir une sortie de diagnostic gRPC détaillée, définissez les variables d'environnement suivantes dans votre Dockerfile ou votre configuration de conteneur :

ENV GRPC_TRACE=all
ENV GRPC_VERBOSITY=DEBUG
Text

Vérifiez cef.log et IronSoftware.log pour plus de détails sur les échecs de connexion. Pour savoir comment récupérer les fichiers journaux d'Azure, consultez Azure Log Files.

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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Prêt à commencer ?

Nuget Downloads 20,878,335Version :2026.9vient de sortir

Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronPDF »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez l'installateur Windows ici.

  1. Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »

Licences à partir de 749 $

Vous avez une question ? Contactez notre équipe de développement.

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise