Konfigurera en proxy när du använder Azure SDK för .NET

Om din organisation kräver att en proxyserver används för att få åtkomst till Internetresurser krävs viss konfiguration för att använda Azure SDK för .NET-klientbibliotek. När proxyn har konfigurerats tillämpas den på den underliggande HttpClient instans som används för HTTP-åtgärder.

Proxyn kan konfigureras via kod eller via en miljövariabel. Vilken metod du väljer beror på önskat beteende. Ange lämplig miljövariabel om du vill att proxyn ska gälla globalt för alla tjänstklienter som skapats i den aktuella processen. Du kan också konfigurera proxyn via kod för att selektivt tillämpa inställningarna på tjänstklienter.

Viktigt!

Följande instruktioner gäller endast för bibliotek med ett beroende av Azure.Core.

Konfigurera med hjälp av kod

Utför följande steg för att programmatiskt konfigurera en proxy:

  1. Skapa ett HttpClientHandler objekt vars egenskap har angetts Proxy .
  2. Skapa ett tjänstklientalternativobjekt vars Transport egenskap är inställd på ett HttpClientTransport objekt som accepterar instansen HttpClientHandler .
  3. Skicka objektet för tjänstklientalternativ till tjänstklientkonstruktorn.

Om du använder Azure Key Vault Secrets-biblioteket som exempel skulle du ha följande kod:

using System.Net;
using Azure.Core.Pipeline;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

using HttpClientHandler handler = new()
{
    Proxy = new WebProxy(new Uri("<proxy-url>")),
};

SecretClientOptions options = new()
{
    Transport = new HttpClientTransport(handler),
};
SecretClient client = new(
    new Uri("https://<key-vault-name>.vault.azure.net/"),
    new DefaultAzureCredential(),
    options);

Konfigurera med miljövariabler

Följande tabell innehåller en inventering av miljövariabler som kan ställas in för att konfigurera en proxy för användning.

Miljövariabel Syfte
HTTP_PROXY eller http_proxy Proxyservern som används för HTTP-begäranden.
HTTPS_PROXY eller https_proxy Proxyservern som används för HTTPS-begäranden.
ALL_PROXY eller all_proxy Proxyservern som används för både HTTP- och HTTPS-begäranden.
NO_PROXY eller no_proxy En kommaavgränsad lista över värdnamn som ska undantas från proxying.
GATEWAY_INTERFACE Indikator på att appen körs i en CGI-miljö (Common Gateway Interface). Exempelvärde: CGI/1.1

En djup förståelse för hur dessa miljövariabler bearbetas finns i koden. Tänk på följande beteenden:

  • Varje miljövariabel i föregående tabell, förutom GATEWAY_INTERFACE, kan alternativt definieras som små bokstäver. Den gemena formen har företräde framför den versala formen.
  • Om både http_proxy och GATEWAY_INTERFACE är odefinierade HTTP_PROXY används.
  • ALL_PROXY betraktas endast när en HTTP- eller HTTPS-proxy är odefinierad.
  • Protokollspecifika miljövariabler har företräde framför ALL_PROXY.

Url:en för proxyservern har formatet http[s]://[username:password@]<ip_address_or_hostname>:<port>/, där username:password kombinationen är valfri. Kontakta nätverksadministratören om du vill hämta IP-adressen eller värdnamnet, porten och autentiseringsuppgifterna för proxyservern.

I följande exempel visas hur du ställer in lämpliga miljövariabler i miljöer med kommandogränssnitt (Windows) och bash (Linux/macOS). Om du anger lämplig miljövariabel får Azure SDK för .NET-bibliotek att använda proxyservern vid körning.

rem Non-authenticated HTTP server:
set HTTP_PROXY=http://10.10.1.10:1180

rem Authenticated HTTP server:
set HTTP_PROXY=http://username:password@10.10.1.10:1180

rem Non-authenticated HTTPS server:
set HTTPS_PROXY=https://10.10.1.10:1180

rem Authenticated HTTPS server:
set HTTPS_PROXY=https://username:password@10.10.1.10:1180