Azure Linux üzerinde IronPDF ve WEBSITE_RUN_FROM_PACKAGE
.NET API'yi Azure Linux App Service üzerinde WEBSITE_RUN_FROM_PACKAGE etkinleştirilmiş şekilde IronPDF kullanarak dağıttığınızda, Chrome render aygıtı dağıtımı başarısız oluyor ve uygulama başlangıçta bir hata oluşturuyor.
Error while deploying IronPdf Chrome renderer: 'Multiple issues occurred while trying to deploy Chrome (libatk-1.0.so.0: cannot open shared object file: No such file or directory) (IronInterop.so: cannot open shared object file: No such file or directory) (Read-only file system: '/home/site/wwwroot/runtimes')'
WEBSITE_RUN_FROM_PACKAGE ayarlandığında, /home/site/wwwroot dizini salt okunur hale gelir. IronPDF, başlangıçta yerel Chrome render aygıtı ikili dosyalarını ve çalışma zamanı kütüphanelerini yazılabilir bir konuma çıkarması gerektiği için salt okunur kısıtlaması dağıtımı engeller. Ayrıca, Azure'un varsayılan Linux ortamı gerekli sistem kütüphanelerine önceden sahip olmayabilir, bu da eksik paylaşılan nesne hatalarına neden olur.
Çözüm
Dağıtım sınırlamalarınıza bağlı olarak üç seçenek mevcuttur.
Seçenek 1: Eksik Bağımlılıkları SSH ile Yükleyin
Uygulama Hizmeti'ne SSH ile erişin ve gerekli sistem kütüphanelerini yüklemek için aşağıdaki komutları çalıştırın:
apt update
apt install -y libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 \
libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 \
libxkbcommon-x11-0 libxrender1 libfontconfig1 libxshmfence1
apt update
apt install -y libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 \
libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 \
libxkbcommon-x11-0 libxrender1 libfontconfig1 libxshmfence1
Bu geçici bir çözümdür. Bu şekilde yüklenen paketler yeniden başlatmalar arasında kalmaz ve dışa yönelik güvenlik duvarı kısıtlamaları olan üretim ortamları için uygun değildir. Linux dağıtımına göre gereken paketlerin tam listesi için Linux dağıtım kılavuzuna bakın.
Seçenek 2: Özel Docker Container Kullanımı (Linux için Önerilir)
Ubuntu veya Debian tabanlı özel bir Docker imajı oluşturun, gerekli sistem paketlerini apt ile yükleyin ve proje dosyanıza IronPdf ve IronPdf.Native.Chrome.Linux NuGet paketlerini ekleyin. Bu yaklaşım, render aygıtına yazılabilir bir dosya sistemi ve imaj oluşturma zamanında önceden yüklenmiş bağımlılıklar sağlar.
Uygulamanıza uygun NuGet paketlerini .csproj ekleyin:
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
IronPdf.Native.Chrome.Linux sürümünün, IronPdf paket sürümünüzle eşleştiğinden emin olun. Projeye yerli paketin dahil edilmesi, IronPDF'nin bir çalışma zamanı indirmesi yapmasını engeller, bu da salt okunur veya ağ kısıtlamalı bir ortamda başarısız olurdu.
Tam bir Dockerfile örneği için IronPDF Docker rehberine bakın.
Seçenek 3: Bir Windows Uygulama Hizmetine Taşıma
Windows Uygulama Hizmetleri, WEBSITE_RUN_FROM_PACKAGE için aynı dosya sistemi izin kısıtlamalarına sahip değildir. IronPDF'nin Windows çalışma zamanı kütüphaneleri yerel olarak desteklenir ve herhangi bir sorun olmadan çıkarılabilir. Bir Windows Uygulama Hizmetine geçiş, temel nedeni tamamen ortadan kaldırır.

