You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在新版Azure SDK for C++中以编程方式配置特定代理?

新版Azure SDK for C++代理配置方法

新版Azure SDK for C++完全支持编程式配置代理,只是实现方式和旧版Microsoft.Azure.Storage.CPP.v140不同——旧版的operation_context全局代理逻辑已被废弃,新版采用基于HTTP传输层的灵活配置方案,以下是具体实现方法:

核心思路

所有Azure SDK客户端都允许通过自定义HTTP传输层(Transport)配置代理,既可为单个客户端单独设置,也可创建全局共享的传输实例供所有客户端复用。

1. 单个客户端配置代理(以存储文件共享为例)

#include <Azure/Storage/Files/Shares.hpp>
#include <Azure/Core/Http/WinHttpTransport.hpp>

int main() {
    // 初始化代理配置
    Azure::Core::Http::WinHttpTransportOptions transportOpts;
    // 设置代理地址(支持http/https/socks5协议)
    transportOpts.Proxy = Azure::Core::Http::WebProxy("http://your-proxy-ip:port");
    // 若代理需认证,添加凭据
    transportOpts.Proxy.SetCredentials("proxy-username", "proxy-password");

    // 创建带代理配置的传输实例
    auto proxyTransport = std::make_shared<Azure::Core::Http::WinHttpTransport>(transportOpts);

    // 将传输实例传入客户端配置,生成目标客户端
    auto shareClient = Azure::Storage::Files::Shares::ShareClient::CreateFromConnectionString(
        "your-storage-connection-string",
        "target-share-name",
        Azure::Storage::Files::Shares::ShareClientOptions{}.SetTransport(proxyTransport));

    // 后续该客户端的所有请求都会走指定代理
    return 0;
}

2. 全局代理配置(所有客户端共用)

如果需要让所有SDK客户端统一使用同一个代理,只需创建一个全局共享的传输实例,在每个客户端初始化时传入即可:

// 全局共享的代理传输实例
std::shared_ptr<Azure::Core::Http::HttpTransport> g_proxyTransport = []() {
    Azure::Core::Http::WinHttpTransportOptions opts;
    opts.Proxy = Azure::Core::Http::WebProxy("http://your-proxy-ip:port");
    return std::make_shared<Azure::Core::Http::WinHttpTransport>(opts);
}();

// 后续创建任何客户端时传入全局传输实例
auto blobClient = Azure::Storage::Blobs::BlobClient::CreateFromConnectionString(
    "connection-string",
    "blob-container/blob-name",
    Azure::Storage::Blobs::BlobClientOptions{}.SetTransport(g_proxyTransport));

3. 跨平台传输层的代理配置

新版SDK支持两种主流HTTP传输层,代理配置逻辑一致,仅需替换对应的传输类和配置类:

  • WinHttpTransport:Windows平台专属,使用WinHttpTransportOptions配置
  • CurlTransport:跨平台(Windows/Linux/macOS),使用CurlTransportOptions配置

关键注意事项

  • 旧版的azure::storage::operation_context::set_default_proxy在新版已被彻底移除,无需再寻找对应API
  • 代理地址直接传入协议+IP+端口格式的字符串即可,无需额外转换
  • 若代理无需认证,跳过SetCredentials步骤即可

内容的提问来源于stack exchange,提问作者gordieb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:55:15