IRONSOFTWAREHOME

IronPDF Azure Kapsayıcılarında gRPC Bağlantı Hataları

Curtis Chau
Curtis Chau
Updated: 10 Haziran 2026

IronPDF, Azure Kapsayıcı Örnekleri veya Azure Uygulama Hizmeti'nde Docker kapsayıcıları içinde dağıtıldığında, uygulama ile IronPDF motoru arasındaki gRPC iletişimi başarısız olabilir. Bu durum, bir kapsayıcı boşta kaldıktan veya yeniden başlatıldıktan sonra ya da gRPC kanalı yeniden deneme mantığı ile yapılandırılmadığında en sık meydana gelir.

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

Bu hatalar, Azure kapsayıcı ortamlarının boşta geçen dönemlerde kapsayıcıları kapatıp geri alabileceği için meydana gelir. gRPC kanalı üzerinde bir yeniden deneme politikası olmadan, tek bir bağlantı kaybı aramanın hemen başarısız olmasına neden olur, yeniden bağlanmaz. HTTP/2 akış kapatılması ve platforma özgü kanal ayarlama uyumsuzlukları da bu hataları üretebilir.

Çözüm

1. Kapsayıcı Yeniden Başlatma Politikasını Her Zaman Olarak Ayarlayın

Azure Kapsayıcı Örneklerinde, yeniden başlatma politikasını Always olarak ayarlayın. Azure Uygulama Hizmeti'nde, sıfıra ölçeklenen ve kapsayıcıları sonlandıran Tüketim planı yerine özel bir plan (Temel B1 veya daha yüksek) kullanın. Kalıcı bağlantılar gerektiren işler için, Kubernetes tarafından yönetilen kapsayıcılar daha istikrarlı bir seçenek sunar.

2. gRPC Yeniden Deneme Mantığını Yapılandırın

Hedef çerçevenize uygun yaklaşımı seçin.

.NET Framework için: JSON yeniden deneme politikası ile Grpc.Core.Channel kullanın

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

.NET Core / .NET 5+ için: Grpc.Net.Client.GrpcChannel ile RetryPolicy kullanın

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. Daha Basit Yapılandırma için RemoteServer Kullanın

Özel kanal seçeneklerine ihtiyacınız yoksa, RemoteServer yerleşik yeniden deneme desteği sağlar ve çoğu Azure kapsayıcı dağıtımı için önerilen başlangıç ​​noktasıdır. Motor ve uygulama kapsayıcıları aynı yerel ağda olmadığında, bunu .Docker() yerine kullanın. Tam bağlantı yapılandırma referansı için, IronPDF Motoru kılavuzuna bakın.

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

4. İstekler Arasında Motorun Kapatılmasını Önleyin

Varsayılan olarak, IronPDF istekler arasında motorunu kapatır. SkipShutdown ayarını true yaparak motor sürecini canlı tutar, böylece yeniden bağlantı yükünü önler ve uzun süre çalışan kapsayıcılarda bağlantı hatası olasılığını azaltır.

IronPdf.Installation.SkipShutdown = true;

Hata Ayıklama İpuçları

Detaylı gRPC tanılama çıktısı almak için, Dockerfile ya da kapsayıcı yapılandırmanızda aşağıdaki ortam değişkenlerini ayarlayın:

ENV GRPC_TRACE=all
ENV GRPC_VERBOSITY=DEBUG
Text

cef.log ve IronSoftware.log konularını kontrol edin, bağlantı hataları hakkında ek ayrıntılar için. Azure'dan log dosyalarını nasıl indireceğinizi öğrenmek için Azure Log Dosyaları bölümüne bakın.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

Başlamaya Hazır mısınız?

Nuget Downloads 20,878,335Sürüm:2026.9yeni yayınlandı

Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez
PDF için C# NuGet Kütüphanesi
NuGet ile yükleyin

Sürüm: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Çözüm Gezgini'nde Referanslar'a sağ tıklayın, NuGet Paketlerini Yönet
  2. Tarayıcıya tıklayın ve "IronPdf" arayın
  3. Paketi seçin ve yükleyin
C# PDF DLL
DLL İndir

Sürüm: 2026.9

veya Windows Yükleyiciyi şuradan buradan indirin.

  1. IronPDF'i, ~/Libs gibi bir yere, Solution dizininiz içinde indirin ve açın.
  2. Visual Studio Çözüm Gezgini'nde, Referanslar'a sağ tıklayın. Tarayıcı sekmesini seçin, "IronPdf.dll"

Lisanslar $999

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez