Rozwiązywanie problemów z wdrażaniem w usłudze Azure Linux App Service

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

Podczas wdrażania IronPDF w usłudze Azure Linux App Service aplikacja może nie być w stanie renderować dokumentów PDF z powodu brakujących bibliotek systemowych. Dzieje się tak, ponieważ środowiska Linux mają mniej zainstalowanych domyślnie pakietów niż Windows, a silnik renderujący IronPDF wymaga dodatkowych bibliotek współdzielonych do działania.

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

Błąd oznacza, że jedna lub więcej bibliotek współdzielonych wymaganych przez IronInterop.so jest nieobecna w środowisku Linux. Uruchomienie ldd IronInterop.so z konsoli SSH na usłudze aplikacji pozwala dokładnie zidentyfikować, które biblioteki są brakujące. Komunikat o systemie plików tylko do odczytu dla folderu environments to oddzielny objaw tego samego stanu brakujących zależności.

Rozwiązanie

Krok 1: Identyfikacja brakujących zależności

  1. Wdróż usługę aplikacji z poziomu Visual Studio jak zwykle.
  2. Otwórz konsolę SSH dla swojej usługi Azure Linux App Service.
  3. Przejdź do katalogu wwwroot:
cd /home/site/wwwroot
  1. Uruchom ldd na binarce natywnej, aby wymienić nierozwiązane zależności:
ldd IronInterop.so
  1. Sprawdź wersję systemu operacyjnego, aby potwierdzić, które nazwy pakietów mają zastosowanie:
cat /etc/os-release

Krok 2: Instalacja brakujących bibliotek

Dla większości dystrybucji Linux (obrazów opartych na Debian/Ubuntu), zainstaluj wymagane pakiety używając:

apt-get update && apt-get install -y libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libxkbcommon0 libasound2 libatspi2.0-0

Dla obrazów Ubuntu 24.04 (używanych z .NET 10), użyj poniższej instrukcji Dockerfile, ponieważ niektóre nazwy pakietów uległy zmianie:

RUN apt update \
    && apt install -y sudo libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2t64 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev

Krok 3: Weryfikacja rozwiązania wszystkich zależności

Uruchom ponownie ldd, aby potwierdzić, że nie ma już nierozwiązanych wpisów:

ldd IronInterop.so

Wszystkie wpisy powinny pokazywać rozwiązana ścieżkę zamiast not found. Kiedy wszystkie zależności są na miejscu, renderowanie PDF przez aplikację webową będzie działać normalnie. Dla pełnej listy wymaganych pakietów w różnych dystrybucjach Linux zobacz przewodnik wdrażania dla Linux.

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,088,359 | 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.