Azure Blob Storage v12如何传入delegatingHandler实现代理设置
Azure Blob Storage v12版本传入DelegatingHandler配置代理的方法
Azure Blob Storage v12版本不再直接在BlobServiceClient构造函数中提供delegatingHandler参数,你需要通过BlobClientOptions配置类将自定义DelegatingHandler注入到请求管道中,具体实现如下:
方式1:传入自定义DelegatingHandler
适合你已经有封装好的代理处理DelegatingHandler的场景:
// 实例化自定义DelegatingHandler DelegatingHandler yourProxyHandler = new CustomProxyDelegatingHandler(); // 初始化Blob配置类,将Handler添加到请求管道 BlobClientOptions blobOptions = new BlobClientOptions(); // 可根据业务需求选择管道位置:PerCall每个请求执行一次/PerRetry每次重试都执行 blobOptions.AddPolicy(yourProxyHandler, HttpPipelinePosition.PerCall); // 构造BlobServiceClient时传入配置参数 var c = new BlobServiceClient(uri, credentials, blobOptions);
方式2:直接配置代理(无需自定义Handler)
如果仅需要配置标准代理,不需要额外自定义请求处理逻辑,可以直接配置传输层的代理属性,更简便:
BlobClientOptions blobOptions = new BlobClientOptions(); blobOptions.Transport = new HttpClientTransport(new HttpClientHandler { UseProxy = true, Proxy = new WebProxy("http://你的代理地址:端口", true) // 如果代理需要认证,可补充Credentials属性 // Proxy.Credentials = new NetworkCredential("用户名", "密码"); }); var c = new BlobServiceClient(uri, credentials, blobOptions);
补充说明
HttpPipelinePosition枚举的三个可选场景:- PerCall:每个原始请求仅执行一次,适合代理配置、全局日志等通用处理逻辑
- PerRetry:每次请求(包括自动重试的请求)都会执行,适合需要逐次处理的场景
- BeforeTransport:在请求提交到传输层之前执行,一般仅用于特殊底层处理需求
内容的提问来源于stack exchange,提问作者gabida
相关产品推荐
相关产品推荐

