共用方式為


使用適用於 .NET 的 Azure SDK 時設定 Proxy

如果您的組織需要使用 Proxy 伺服器來存取因特網資源,則需要某些設定才能使用適用於 .NET 的 Azure SDK 用戶端連結庫。 設定之後,Proxy 會套用至用於 HTTP 作業的基礎 HttpClient 實例。

您可以透過程式代碼或環境變數來設定 Proxy。 您選擇的方法取決於所需的行為。 如果您希望 Proxy 全域套用至目前進程內建立的所有服務用戶端,請設定適當的環境變數。 或者,透過程式代碼設定 Proxy 以選擇性地將設定套用至服務用戶端。

重要

下列指示僅適用於 具有 Azure.Core 相依性的連結庫。

使用程式代碼設定

若要以程式設計方式設定 Proxy,請完成下列步驟:

  1. 建立 HttpClientHandler 已設定屬性的物件 Proxy
  2. 建立服務客戶端選項物件,其 Transport 屬性設定為 HttpClientTransport 接受 HttpClientHandler 實例的物件。
  3. 將服務客戶端選項對象傳遞至服務用戶端建構函式。

使用 Azure 金鑰保存庫 Secrets 連結庫作為範例,您有下列程式代碼:

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

使用環境變數進行設定

下表提供可設定 Proxy 以供使用的環境變數清查。

環境變數 目的
HTTP_PROXYhttp_proxy HTTP 要求上使用的 Proxy 伺服器。
HTTPS_PROXYhttps_proxy HTTPS 要求中使用的 Proxy 伺服器。
ALL_PROXYall_proxy 用於 HTTP 和 HTTPS 要求的 Proxy 伺服器。
NO_PROXYno_proxy 要從 Proxy 中排除的主機名逗號分隔清單。
GATEWAY_INTERFACE 指出應用程式正在通用閘道介面 (CGI) 環境中執行。 範例值:CGI/1.1

如需如何處理這些環境變數的深入瞭解,請參閱 程序代碼。 請注意下列行為:

  • 上述數據表中的每個環境變數,除了 GATEWAY_INTERFACE之外,也可以定義為小寫。 小寫表單的優先順序高於大寫表單。
  • 如果與 GATEWAY_INTERFACEhttp_proxy未定義,HTTP_PROXY 則會使用 。
  • ALL_PROXY 只有在未定義 HTTP 或 HTTPS Proxy 時才會考慮。
  • 通訊協定特定的環境變數優先於 ALL_PROXY

Proxy 伺服器 URL 的格式 http[s]://[username:password@]<ip_address_or_hostname>:<port>/為 ,其中組合是選擇性的 username:password 。 若要取得 Proxy 伺服器的 IP 位址或主機名、埠和認證,請參閱您的網路管理員。

下列範例示範如何在命令殼層 (Windows) 和bash (Linux/macOS) 環境中設定適當的環境變數。 設定適當的環境變數會導致 Azure SDK for .NET 連結庫在運行時間使用 Proxy 伺服器。

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