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

.NET Core 6+配置代理连接Azure Blob存储遇407错误求助

解决Azure Blob存储代理407认证错误

问题分析

错误码407表示代理服务器要求身份验证,当前代码未配置代理的认证凭据,导致请求无法通过代理建立隧道连接。

解决方案

通过为Blob客户端配置带认证信息的代理,具体步骤如下:

  1. 添加必要的命名空间
using System.Net;
using System.Net.Http;
using System.IO;
  1. 配置代理及认证凭据
    创建包含代理地址、用户名、密码的WebProxy实例,再关联到HttpClientHandler中。

  2. 将代理配置应用到Blob客户端
    通过CloudBlobClient的配置项注入代理信息。

修改后的完整代码

string blobstorageconnection = pConfig.AzuerBlobStorageConnectionString;
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(blobstorageconnection);
CloudBlobClient? blobClient = null;
CloudBlockBlob? blockBlob = null;

// 配置代理信息,替换为实际代理地址、用户名、密码
var proxy = new WebProxy("http://ipaddress:port/")
{
    Credentials = new NetworkCredential("proxy_username", "proxy_password")
};

var httpClientHandler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true,
    PreAuthenticate = true // 提前发送认证凭据,减少407重试次数
};

// 创建Blob客户端并应用代理配置
blobClient = cloudStorageAccount.CreateCloudBlobClient();
// 通过自定义HttpClientFactory注入代理配置
blobClient.HttpClientFactory = new DelegatingHttpClientFactory(() => new HttpClient(httpClientHandler));

CloudBlobContainer container = blobClient.GetContainerReference(pConfig.AzureStorageContainerName);
blockBlob = container.GetBlockBlobReference(pFileName);
// 用Path.Combine替代硬编码路径分隔符,提升跨平台兼容性
await blockBlob.UploadFromFileAsync(Path.Combine(pFilePath, pFileName));

注意事项

  • 务必将代码中的ipaddress:port、proxy_username、proxy_password替换为实际的代理服务信息。
  • 如果使用较新版本的Azure.Storage.Blobs SDK,建议迁移到BlobServiceClient等新API,代理配置逻辑类似,通过BlobClientOptions.Transport注入自定义HttpClientHandler即可。

内容的提问来源于stack exchange,提问作者Srinivas Mohan Pillalamarrri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:25:38