C#'da PDF Oluşturma için Proxy Sunucularını Yapılandırma

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

IronPDF'deki proxy yapılandırması, RenderHtmlAsPdf() aşırı yüklemelerinde bir yöntem parametresidir — ChromePdfRenderOptions üzerindeki bir özellik değildir. Bu ayrım önemlidir çünkü RenderHtmlAsPdf()'de proxy parametresi hiç yoktur; bu da kurumsal bir proxy arkasında canlı URL'leri görüntülemeniz gerektiğinde farklı bir strateji gerektirir. null (varsayılan) değerini geçirirseniz, IronPDF doğrudan bağlanır.

Bu kılavuz, üretim ortamında karşılaşabileceğiniz her türlü proxy senaryosunu kapsamaktadır: doğrudan proxy dizeleri, kimlik doğrulamalı kurumsal proxy'ler, RenderUrlAsPdf geçici çözümü, Docker konteyner yapılandırması, CI/CD boru hattı entegrasyonu ve SSL yakalama ile NTLM kimlik doğrulaması için yaygın sorun giderme modelleri.

Ortamınızdaki proxy yapılandırmalarını test etmek için 30 günlük ücretsiz deneme sürümünü başlatın.

Hızlı Başlangıç: Proxy Aracılığıyla PDF'leri Oluşturma

IronPDF'nin isteğe bağlı proxy parametresi, kurumsal proxy'ler arkasında sunulan canlı web sayfalarını dönüştürmenize yardımcı olur. Hızlı bir başlangıç yapmak için bu kod parçasını kullanın.

  1. IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    using IronPdf;
    
    var renderer = new ChromePdfRenderer();
    
    // Proxy is the third parameter — not a render option
    PdfDocument pdf = renderer.RenderHtmlAsPdf(
        "<h1>Hello from behind the proxy</h1>",
        baseUrlOrPath: null,
        proxy: "http://proxy.co/rp.local:8080"
    );
    pdf.SaveAs("proxied-output.pdf");
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın

    arrow pointer

Minimal İş Akışı (3 Adım)

  1. NuGet aracılığıyla IronPDF'yi yükleyin: Install-Package IronPdf
  2. Proxy dizesini üçüncü parametre olarak RenderHtmlAsPdf'ye aktarın
  3. Biçim: Kimlik doğrulamalı proxy'ler için http(s)://host:port veya http(s)://user:pass@host:port

RenderHtmlAsPdf'ye Proxy'yi Nasıl Aktarırsınız?

Proxy parametresi, dört yöntem imzasında isteğe bağlı bir string'dir:

// Instance methods
PdfDocument RenderHtmlAsPdf(string Html, string BaseUrlOrPath, string Proxy = null)
PdfDocument RenderHtmlAsPdf(string Html, Uri BaseUrl = null, string Proxy = null)

// Static methods
PdfDocument StaticRenderHtmlAsPdf(string Html, ChromePdfRenderOptions Options = null, string Proxy = null)
PdfDocument StaticRenderHtmlAsPdf(string Html, string BaseUrlOrPath, ChromePdfRenderOptions Options = null, string Proxy = null)
// Instance methods
PdfDocument RenderHtmlAsPdf(string Html, string BaseUrlOrPath, string Proxy = null)
PdfDocument RenderHtmlAsPdf(string Html, Uri BaseUrl = null, string Proxy = null)

// Static methods
PdfDocument StaticRenderHtmlAsPdf(string Html, ChromePdfRenderOptions Options = null, string Proxy = null)
PdfDocument StaticRenderHtmlAsPdf(string Html, string BaseUrlOrPath, ChromePdfRenderOptions Options = null, string Proxy = null)
' Instance methods
Function RenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Proxy As String = Nothing) As PdfDocument
End Function

Function RenderHtmlAsPdf(Html As String, Optional BaseUrl As Uri = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function

' Static methods
Shared Function StaticRenderHtmlAsPdf(Html As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function

Shared Function StaticRenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
$vbLabelText   $csharpLabel

Bu parametre null (varsayılan) olduğunda, IronPDF'nin Chromium motoru, HTML'nizde referans verilen stil sayfaları, resimler, yazı tipleri ve JavaScript dosyaları gibi harici kaynaklara doğrudan bağlanır. Bir proxy dizesi sağladığınızda, görüntüleme motorundan gelen tüm HTTP/HTTPS istekleri bu proxy üzerinden yönlendirilir.

using IronPdf;

var renderer = new ChromePdfRenderer();

// Direct connection (default — no proxy)
var pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>");

// Through an unauthenticated proxy
var pdfProxied = renderer.RenderHtmlAsPdf(
    "<h1>Proxied</h1>",
    baseUrlOrPath: null,
    proxy: "http://squid.internal:3128"
);

// Using the Uri overload
var pdfUri = renderer.RenderHtmlAsPdf(
    "<h1>Proxied via Uri overload</h1>",
    baseUrl: new Uri("https://assets.example.com/"),
    proxy: "https://proxy.co/rp.local:8443"
);
using IronPdf;

var renderer = new ChromePdfRenderer();

// Direct connection (default — no proxy)
var pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>");

// Through an unauthenticated proxy
var pdfProxied = renderer.RenderHtmlAsPdf(
    "<h1>Proxied</h1>",
    baseUrlOrPath: null,
    proxy: "http://squid.internal:3128"
);

// Using the Uri overload
var pdfUri = renderer.RenderHtmlAsPdf(
    "<h1>Proxied via Uri overload</h1>",
    baseUrl: new Uri("https://assets.example.com/"),
    proxy: "https://proxy.co/rp.local:8443"
);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Direct connection (default — no proxy)
Dim pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>")

' Through an unauthenticated proxy
Dim pdfProxied = renderer.RenderHtmlAsPdf(
    "<h1>Proxied</h1>",
    baseUrlOrPath:=Nothing,
    proxy:="http://squid.internal:3128"
)

' Using the Uri overload
Dim pdfUri = renderer.RenderHtmlAsPdf(
    "<h1>Proxied via Uri overload</h1>",
    baseUrl:=New Uri("https://assets.example.com/"),
    proxy:="https://proxy.co/rp.local:8443"
)
$vbLabelText   $csharpLabel

Proxy dizesi hem http:// hem de https:// şemalarını destekler. Uygulamanız ile proxy sunucusu arasındaki bağlantı için proxy'nin kendisi TLS şifrelemesi gerektirdiğinde https:// kullanın. Buradaki şema, nihai kaynağı değil, proxy bağlantısını ifade eder — bir http:// proxy, CONNECT tünelleme yoluyla https:// kaynaklarını yine de alabilir.

Statik yöntem varyantları aynı proxy parametresini kabul eder; bu, konsol uygulamalarında veya birim testlerinde tek seferlik görüntülemeler için kullanışlıdır:

// Static render with proxy — no renderer instance needed
var pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
    "<h1>Static render through proxy</h1>",
    options: null,
    proxy: "http://proxy.co/rp.local:8080"
);
// Static render with proxy — no renderer instance needed
var pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
    "<h1>Static render through proxy</h1>",
    options: null,
    proxy: "http://proxy.co/rp.local:8080"
);
' Static render with proxy — no renderer instance needed
Dim pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
    "<h1>Static render through proxy</h1>",
    options:=Nothing,
    proxy:="http://proxy.co/rp.local:8080"
)
$vbLabelText   $csharpLabel

Önemli: ChromePdfRenderOptions üzerinde Proxy özelliği yoktur. Orada aramayın. Proxy, yalnızca RenderHtmlAsPdf ve FromHtml aşırı yüklemelerinde bir yöntem parametresidir.

Kurumsal Proxy ile Nasıl Kimlik Doğrulaması Yapılır?

Çoğu Enterprise proxy, kimlik bilgilerini gerektirir. Bunları http(s)://username:password@host:port biçimini kullanarak proxy URL'sine doğrudan gömebilirsiniz:

using IronPdf;

var renderer = new ChromePdfRenderer();

string proxyWithAuth = "http://svc-account:P%40ssw0rd%21@proxy.co/rp.local:8080";

PdfDocument pdf = renderer.RenderHtmlAsPdf(
    htmlContent,
    baseUrlOrPath: @"C:\templates\assets\",
    proxy: proxyWithAuth
);
pdf.SaveAs("report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string proxyWithAuth = "http://svc-account:P%40ssw0rd%21@proxy.co/rp.local:8080";

PdfDocument pdf = renderer.RenderHtmlAsPdf(
    htmlContent,
    baseUrlOrPath: @"C:\templates\assets\",
    proxy: proxyWithAuth
);
pdf.SaveAs("report.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim proxyWithAuth As String = "http://svc-account:P%40ssw0rd%21@proxy.co/rp.local:8080"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
    htmlContent,
    baseUrlOrPath: "C:\templates\assets\",
    proxy:=proxyWithAuth
)
pdf.SaveAs("report.pdf")
$vbLabelText   $csharpLabel

Şifrelerdeki özel karakterleri URL kodlayın. Şifreniz @, #, :, / veya diğer ayrılmış URI karakterleri içeriyorsa, bunlar yüzde kodlanmalıdır. Yaygın kodlamalar:

Karakter Kodlanmış
@ %40
# %23
: %3A
/ %2F
! %21
% %25

Şifreyi programlı olarak kodlamak için Uri.EscapeDataString() kullanın:

string rawPassword = "P@ssw0rd!";
string encoded = Uri.EscapeDataString(rawPassword); // "P%40ssw0rd%21"
string proxy = $"http://svc-account:{encoded}@proxy.co/rp.local:8080";
string rawPassword = "P@ssw0rd!";
string encoded = Uri.EscapeDataString(rawPassword); // "P%40ssw0rd%21"
string proxy = $"http://svc-account:{encoded}@proxy.co/rp.local:8080";
Imports System

Dim rawPassword As String = "P@ssw0rd!"
Dim encoded As String = Uri.EscapeDataString(rawPassword) ' "P%40ssw0rd%21"
Dim proxy As String = $"http://svc-account:{encoded}@proxy.co/rp.local:8080"
$vbLabelText   $csharpLabel

Proxy kimlik doğrulamasını web sayfası kimlik doğrulamasıyla karıştırmayın. ChromeHttpLoginCredentials.Net/workUsername ve NetworkPassword özellikleri, proxy sunucusuna karşı değil, görüntülenen web sayfasına karşı (NTLM/web sitesi ile Negotiate) kimlik doğrulaması yapar. Proxy kimlik doğrulaması için, kimlik bilgileri yukarıda gösterildiği gibi proxy URL dizesine girilir.

Proxy Arkasında URL'leri Nasıl Görüntülersiniz?

RenderUrlToPdf, proxy parametresini kabul etmez. Bu, kasıtlı bir API tasarım tercihidir — NavigateUrl, Chromium'u bir URL'ye yönlendirir ve bu yönlendirme için proxy yapılandırması, HTML işleme sırasında kaynak yükleme için olduğundan farklı bir şekilde ele alınır.

Önerilen geçici çözüm: HttpProxy ile yapılandırılmış HttpClient kullanarak HTML'yi kendiniz alın, ardından HTML dizesini proxy parametresiyle RenderHtmlAsPdf'ye aktarın (böylece başvurulan varlıklar — resimler, CSS, yazı tipleri — de proxy üzerinden yönlendirilir).

using IronPdf;
using System.Net;
using System.Net.Http;

// Step 1: Configure HttpClient with the corporate proxy
var proxy = new WebProxy("http://proxy.co/rp.local:8080")
{
    Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};

var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var httpClient = new HttpClient(handler);

// Step 2: Fetch the HTML from the target URL
string targetUrl = "https://dashboard.internal.co/rp/quarterly-report";
string html = await httpClient.GetStringAsync(targetUrl);

// Step 3: Render the fetched HTML, with the proxy for asset loading
var renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf(
    html,
    baseUrlOrPath: targetUrl,  // Resolves relative asset paths against the original URL
    proxy: "http://svc-account:P%40ssw0rd%21@proxy.co/rp.local:8080"
);
pdf.SaveAs("quarterly-report.pdf");
using IronPdf;
using System.Net;
using System.Net.Http;

// Step 1: Configure HttpClient with the corporate proxy
var proxy = new WebProxy("http://proxy.co/rp.local:8080")
{
    Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};

var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var httpClient = new HttpClient(handler);

// Step 2: Fetch the HTML from the target URL
string targetUrl = "https://dashboard.internal.co/rp/quarterly-report";
string html = await httpClient.GetStringAsync(targetUrl);

// Step 3: Render the fetched HTML, with the proxy for asset loading
var renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf(
    html,
    baseUrlOrPath: targetUrl,  // Resolves relative asset paths against the original URL
    proxy: "http://svc-account:P%40ssw0rd%21@proxy.co/rp.local:8080"
);
pdf.SaveAs("quarterly-report.pdf");
Imports IronPdf
Imports System.Net
Imports System.Net.Http

' Step 1: Configure HttpClient with the corporate proxy
Dim proxy As New WebProxy("http://proxy.co/rp.local:8080") With {
    .Credentials = New NetworkCredential("svc-account", "P@ssw0rd!")
}

Dim handler As New HttpClientHandler With {
    .Proxy = proxy,
    .UseProxy = True
}

Using httpClient As New HttpClient(handler)
    ' Step 2: Fetch the HTML from the target URL
    Dim targetUrl As String = "https://dashboard.internal.co/rp/quarterly-report"
    Dim html As String = Await httpClient.GetStringAsync(targetUrl)

    ' Step 3: Render the fetched HTML, with the proxy for asset loading
    Dim renderer As New ChromePdfRenderer()

    Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
        html,
        baseUrlOrPath:=targetUrl,  ' Resolves relative asset paths against the original URL
        proxy:="http://svc-account:P%40ssw0rd%21@proxy.co/rp.local:8080"
    )
    pdf.SaveAs("quarterly-report.pdf")
End Using
$vbLabelText   $csharpLabel

baseUrlOrPath parametresi, alınan HTML'deki (<img src="/images/logo.png">, <link href="/css/styles.css">) göreceli yolların doğru şekilde çözümlenmesi için orijinal hedef URL'ye ayarlanır. proxy parametresi, bu varlık isteklerinin işleme sırasında proxy üzerinden yönlendirilmesini sağlar.

Bu model, kimlik doğrulama gerektiren sayfalarda da çalışır — almadan önce HttpClient öğesini uygun çerezler veya başlıklarla yapılandırın, ardından kimlik doğrulaması yapılmış HTML'yi IronPDF'ye aktarın. HTTP istek başlığı kılavuzu, kimlik doğrulaması yapılmış istekler için başlık yapılandırmasını ele almaktadır.

Sayfa, görüntüleme için JavaScript'e dayanıyorsa (SPA'lar, React panoları, Angular uygulamaları), getirilen HTML yalnızca ilk kabuğu içerecektir — HttpClient getirme işlemi sırasında istemci tarafında görüntüleme gerçekleştirilmeyecektir. Bu durumlarda iki seçeneğiniz vardır: HTTPS_PROXY ortam değişkenlerini (bir sonraki bölümde ele alınacaktır) ayarlayarak RenderUrlAsPdf()'nin işletim sistemi düzeyinde proxy üzerinden yönlendirilmesini sağlayın veya RenderHtmlAsPdf()'ye aktarmadan önce tam olarak işlenmiş HTML'yi almak için başsız bir tarayıcı kullanın.

Docker Kapsayıcılarında Proxy Nasıl Yapılandırılır?

Konteyner ortamlarında, yöntem başına parametreler yerine sistem düzeyinde proxy yapılandırmasını tercih edebilirsiniz. IronPDF'nin Chromium motoru, Linux kapsayıcılarının giden trafik yönlendirmesi için kullandığı standart HTTP_PROXY ve HTTPS_PROXY ortam değişkenlerini destekler.

Bunları Dockerfile dosyanıza ekleyin:

FROM mcr.microsoft.com/dotnet/aspnet:8.0

# System-level proxy for all outbound HTTP/HTTPS traffic
ENV HTTP_PROXY=http://proxy.co/rp.local:8080
ENV HTTPS_PROXY=http://proxy.co/rp.local:8080
ENV NO_PROXY=localhost,127.0.0.1,.internal.co/rp

# Install IronPDF dependencies (fonts, etc.)
RUN apt-get update && apt-get install -y \
    libgdiplus \
    libc6-dev \
    fonts-liberation \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]

Bu ortam değişkenleri ayarlandığında, proxy parametresi olmadan RenderHtmlAsPdf çağrısını yapabilirsiniz — Chromium, sistem düzeyindeki yapılandırmayı otomatik olarak algılar:

// No proxy parameter needed — Chromium uses HTTP_PROXY env var
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// No proxy parameter needed — Chromium uses HTTP_PROXY env var
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
' No proxy parameter needed — Chromium uses HTTP_PROXY env var
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
$vbLabelText   $csharpLabel

RenderHtmlAsPdf() iç kaynaklar için önemlidir. Aksi takdirde, dahili hizmetlere (Kubernetes kümenizin içinde çalışan yerel bir CSS sunucusu veya görüntü CDN'si gibi) yapılan istekler gereksiz yere proxy üzerinden yönlendirilecektir. Proxy'yi atlaması gereken ana bilgisayar adlarını ve etki alanlarını virgülle ayırın.

Genel trafik için sistem düzeyinde bir proxy'ye ve belirli renderlar için farklı bir proxy'ye ihtiyacınız varsa, method parametresi ortam değişkeninden önceliklidir. Bu, gerektiğinde her bir görüntüleme için kontrol sağlar.

CI/CD Pipeline'larında Proxy'yi Nasıl Yönetirsiniz?

Kurumsal ağlardaki CI/CD çalıştırıcıları genellikle proxy'lerin arkasında bulunur. Proxy URL'sini bir derleme değişkeni veya gizli anahtar olarak aktarın — kimlik bilgilerini asla kaynak kontrolüne sabit olarak kodlamayın.

GitHub Actions:

jobs:
  generate-pdf:
    runs-on: ubuntu-latest
    env:
      HTTP_PROXY: ${{secrets.CORP_PROXY_URL}}
      HTTPS_PROXY: ${{secrets.CORP_PROXY_URL}}
    steps:
      - uses: actions/checkout@v4
      - run: dotnet build
      - run: dotnet test
jobs:
  generate-pdf:
    runs-on: ubuntu-latest
    env:
      HTTP_PROXY: ${{secrets.CORP_PROXY_URL}}
      HTTPS_PROXY: ${{secrets.CORP_PROXY_URL}}
    steps:
      - uses: actions/checkout@v4
      - run: dotnet build
      - run: dotnet test
YAML

Azure DevOps:

variables:
  - group: proxy-settings  # Contains PROXY_URL secret

steps:
  - script: |
      export HTTP_PROXY=$(PROXY_URL)
      export HTTPS_PROXY=$(PROXY_URL)
      dotnet run --project PdfGenerator
    displayName: 'Generate PDFs behind proxy'
variables:
  - group: proxy-settings  # Contains PROXY_URL secret

steps:
  - script: |
      export HTTP_PROXY=$(PROXY_URL)
      export HTTPS_PROXY=$(PROXY_URL)
      dotnet run --project PdfGenerator
    displayName: 'Generate PDFs behind proxy'
YAML

Jenkins (Bildirimsel İş Akışı):

environment {
    HTTP_PROXY  = credentials('corp-proxy-url')
    HTTPS_PROXY = credentials('corp-proxy-url')
}

Üç durumda da Chromium, ortam değişkenlerini otomatik olarak okur. Açık kontrolü tercih ediyorsanız, ortamdan proxy URL'sini okuyun ve bunu yöntem parametresi olarak iletin:

string? proxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
var pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: proxy);
string? proxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
var pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: proxy);
Option Strict On



Dim proxy As String = Environment.GetEnvironmentVariable("HTTPS_PROXY")
Dim pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath:=Nothing, proxy:=proxy)
$vbLabelText   $csharpLabel

Proxy Sorunlarını Nasıl Giderirsiniz?

Zaman aşımı hataları: Kurumsal proxy'ler gecikmeye neden olur. Varsayılan 60 saniyelik render zaman aşımını artırın:

renderer.RenderingOptions.Timeout = 120; // seconds
renderer.RenderingOptions.Timeout = 120; // seconds
renderer.RenderingOptions.Timeout = 120 ' seconds
$vbLabelText   $csharpLabel

Bu, RenderTimeout özelliğidir — Chromium'un sayfa yükleme ve kaynak alma işlemlerinin toplam süresini ne kadar bekleyeceğini kontrol eder. Proxy'niz her istek başına 5–10 saniyelik gecikme ekliyorsa ve sayfa 20'den fazla harici kaynak yüklüyorsa, 60 saniye yeterli olmayabilir.

SSL dinleme (MITM proxy'leri): Birçok kurumsal proxy, kurumsal kök CA sertifikası kullanarak HTTPS trafiğini şifresini çözer ve yeniden şifreler. Chromium, varsayılan olarak kurumsal CA'ya güvenmediği için bu bağlantıları reddeder. İki çözüm:

  1. Kurumsal CA sertifikasını konteynerin veya ana bilgisayarın güvenilir kök deposuna yükleyin. Linux'ta: .crt'yi /usr/local/share/ca-certificates/'ye kopyalayın ve update-ca-certificates'yi çalıştırın.
  2. Yalnızca geliştirme aşamasında sertifika doğrulamasını devre dışı bırakabilirsiniz — ancak bunu asla üretim ortamında yapmayın. En güvenli yaklaşım her zaman uygun sertifikayı yüklemektir.

NTLM kimlik doğrulama: Satır içi user:pass@host biçimi, Temel ve Özet proxy kimlik doğrulamasını destekler. NTLM (Windows odaklı Enterprise işletmelerde yaygın olarak kullanılır), proxy URL dizesi üzerinden desteklenmez. Çözüm, ana bilgisayarda veya bir sidecar konteyneri olarak CNTLM gibi yerel bir NTLM-to-Basic yönlendirme proxy'si çalıştırmaktır. CNTLM'yi NTLM kimlik bilgilerinizle yapılandırın, ardından IronPDF'yi http://localhost:3128 (CNTLM'nin varsayılan bağlantı noktası) adresine yönlendirin.

Boş PDF veya eksik varlıklar: PDF görüntüleniyor ancak resimler/CSS eksikse, HTML'niz proxy'nin engellediği veya farklı bir proxy yolu gerektiren kaynaklara başvuruyor demektir. baseUrlOrPath parametresinin proxy üzerinden doğru şekilde çözümlendiğini doğrulayın ve proxy'nin erişim günlüklerinde 403 veya 407 yanıtları olup olmadığını kontrol edin.

Yerel varlıklar için proxy atlama: HTML'niz yerel varlıklar (paketlenmiş resimler, satır içi CSS) ve uzak kaynaklar (CDN yazı tipleri, harici komut dosyaları) karışımına başvuruyorsa, proxy'nin yalnızca uzak istekleri işlemesi yeterlidir. baseUrlOrPath'yi dosya sistemi varlıkları için yerel bir dizine ayarlayın ve proxy'nin yalnızca ağ isteklerini işlemesine izin verin. Bu, yerel dosya okumalarının gereksiz yere proxy üzerinden yönlendirilmesini önler.

Bağlantı tanılama: Proxy dizesini IronPDF ile kullanmadan önce doğrulamak için, önce basit bir HttpClient isteği ile test edin:

var proxy = new WebProxy("http://proxy.co/rp.local:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler);

var response = await client.GetAsync("https://httpbin.org/ip");
Console.WriteLine(await response.Co/ntent.ReadAsStringAsync());
// Should return the proxy's external IP, not your machine's IP
var proxy = new WebProxy("http://proxy.co/rp.local:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler);

var response = await client.GetAsync("https://httpbin.org/ip");
Console.WriteLine(await response.Co/ntent.ReadAsStringAsync());
// Should return the proxy's external IP, not your machine's IP
Imports System.Net.Http
Imports System.Net

Dim proxy As New WebProxy("http://proxy.co/rp.local:8080")
Dim handler As New HttpClientHandler With {.Proxy = proxy, .UseProxy = True}
Using client As New HttpClient(handler)
    Dim response = Await client.GetAsync("https://httpbin.org/ip")
    Console.WriteLine(Await response.Content.ReadAsStringAsync())
    ' Should return the proxy's external IP, not your machine's IP
End Using
$vbLabelText   $csharpLabel

Bu başarılı olursa ancak IronPDF hala başarısız olursa, sorun muhtemelen SSL engellemesi veya proxy'niz ile Chromium'un CONNECT tünellemesi arasındaki protokol uyuşmazlığıdır. Proxy'nin HTTPS kaynakları için HTTP CONNECT'i destekleyip desteklemediğini kontrol edin — bazı proxy'ler tünellemeye izin vermek için açık bir yapılandırma gerektirir.

Sonraki Adımlar

IronPDF'deki proxy desteği, RenderHtmlAsPdf() üzerindeki bir yöntem parametresidir — proxy dizesini geçin ve Chromium motoru tüm HTTP trafiğini bu yolla yönlendirir. RenderUrlAsPdf() senaryoları için, önce HttpClient ve bir WebProxy ile HTML'yi alın. Konteynerler ve CI/CD için, sistem düzeyindeki HTTPS_PROXY ortam değişkenleri, kod değişiklikleri yapmadan altyapı düzeyinde kontrol sağlar.

Web sayfası kimlik doğrulaması (proxy kimlik doğrulamasından farklıdır) için oturum açma ve kimlik doğrulama kılavuzunu, özel başlıklar için HTTP istek başlığı kılavuzunu ve zaman aşımı ve performans ayarlaması için görüntüleme seçenekleri referansını inceleyin.

$999 adresinden lisans seçeneklerini görüntüleyin. ChromePdfRenderer API referansı, her yöntem aşırı yüklemesini belgelemektedir ve ChromePdfRenderOptions referansı, tüm yapılandırılabilir özellikleri kapsamaktadır. RenderUrlAsPdf() ProxyAddress ChromePdfRenderOptions RenderHtmlAsPdf StaticRenderHtmlAsPdf RenderUrlAsPdf HttpClient WebProxy RenderHtmlAsPdf() ```yaml

spesifikasyon: konteynerler:

  • ad: pdf-generator resim: myregistry/pdf-service:latest env:
    • isim: HTTP_PROXY valueFrom: configMapKeyRef: ad: proxy-config anahtar: http-proxy
    • isim: HTTPS_PROXY valueFrom: configMapKeyRef: ad: proxy-config anahtar: https-proxy
    • isim: NO_PROXY value: "localhost,127.0.0.1,.internal.co/rp" <a href="https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderOptions.html">ChromePdfRenderOptions.Timeout`

Sıkça Sorulan Sorular

PDF oluşturma için C#'ta bir proxy sunucusunu nasıl yapılandırırım?

C#'ta PDF oluşturma için bir proxy sunucusunu yapılandırmak için IronPDF içindeki RenderHtmlAsPdf yöntemi çağırılırken proxy parametresini kullanabilirsiniz. Bu, web kaynaklarına erişim için proxy ayarlarını belirtmenizi sağlar.

IronPDF ile proxy kullanmanın amacı nedir?

IronPDF ile proxy kullanmak, özellikle güvenlik duvarlarının arkasında veya kurumsal ağlarda gibi kısıtlı internet erişimi olan ortamlarda, PDF oluştururken ağ taleplerini yönetmeye yardımcı olur.

IronPDF kimlik doğrulamalı proxy'leri yönetebilir mi?

Evet, IronPDF kimlik doğrulamalı proxy'leri yönetebilir. Gerekli kimlik doğrulama bilgilerini proxy ayarlarıyla birlikte C# kodunuzda sağlamanız gerekir.

IronPDF'yi Docker konteynerde proxy ile kullanmak mümkün mü?

Evet, IronPDF bir Docker konteynerde proxy ile çalışacak şekilde yapılandırılabilir. Proxy ayarlarını iletmek için Docker ortam değişkenlerinin doğru ayarlandığından emin olun.

IronPDF ile proxy sorunlarını nasıl gideririm?

IronPDF ile proxy sorunlarını gidermek için proxy ayarlarınızı kontrol edin, kimlik doğrulama ayrıntılarının doğru olduğundan emin olun ve ağ erişilebilirliğini doğrulayın. Günlüklerdeki hata mesajlarını incelemek, sorunu belirlemeye de yardımcı olabilir.

IronPDF proxy yapılandırmaları ile CI/CD boru hatlarında kullanılabilir mi?

Evet, IronPDF proxy yapılandırmaları ile CI/CD boru hatlarına entegre edilebilir. PDF oluşturma işlemi sırasında gerekli proxy ayarlarını iletmek için derleme ortamınızın doğru ayarlanmış olduğundan emin olun.

IronPDF ile kurumsal ortamlarda proxy kullanmanın faydaları nelerdir?

Kurumsal ortamlarda IronPDF ile proxy kullanmak, güvenliği artırabilir, internet erişimini kontrol edebilir ve bant genişliği kullanımını yönetebilir, böylece kurumsal BT politikalarına uyumu kolaylaştırır.

Darrius Serrant
Tam Yığın Yazılım Mühendisi (WebOps)

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimi alanında Lisans Derecesine sahip ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışıyor. Genç yaşlardan itibaren kodlamaya çekildi, bilgisayar bilimi hem gizemli hem de erişilebilir olarak görüldü ve bu özellik, yaratıcılık ...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,014,616 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.