Azure Blob 存储客户端库 v12 设置代理
Posted
技术标签:
【中文标题】Azure Blob 存储客户端库 v12 设置代理【英文标题】:Azure Blob Storage client library v12 setting proxy 【发布时间】:2022-01-07 23:58:51 【问题描述】:我从 v11 迁移到 v12,我想替换:
var c = new CloudBlobClient(credentiels, delegatingHandler);
到
var c = new BlobServiceClient(uri, credentiels);
问题是如何在 v12 中传递 delegatingHandler
?
【问题讨论】:
【参考方案1】:v12 azure.Storage.Blobs 类名与 v11 不同。 v12 的构造函数中没有 DelegatingHandler 参数。
DelegatingHandler 可以改变 HttpClientHandler 的 Proxy 属性。
在这种情况下,此实例对于客户端是唯一的。如果不指定 DelegatingHandler,将使用单例 HttpClientHandler。 如前所述,我们使用 DelegatingHandler,它能够更改代理的属性。首先,出于这个原因,我们将构建一个 DelegatingHandler 实现。ProxyInjectionHandler.cs
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
namespace Hoge
public class ProxyInjectionHandler: DelegatingHandler
private readonly IWebProxy Proxy;
private bool FirstCall = true;
public ProxyInjectionHandler(IWebProxy proxy)
this.Proxy = proxy;
protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
if (FirstCall)
var handler = (HttpClientHandler) this.InnerHandler;
handler.Proxy = this.Proxy;
handler.UseProxy = true;
FirstCall = false;
return base.SendAsync(request, cancellationToken);
将此传递给客户端的构造函数。
var account = CloudStorageAccount.Parse (connectionString);
var client = new CloudBlobClient (account.BlobEndpoint, account.Credentials, new ProxyInjectionHandler (new WebProxy (new Uri (proxyUrl))));
var container = client.GetContainerReference ("...");
await container.CreateIfNotExistsAsync ();
参考:
Socket exhaustion when using HttpClient in multiple threads Accessing Azure Storage via HTTP Proxy for v12【讨论】:
您好,感谢您的解释,问题是如何将其应用于 v12 版:D 这正是我要问的情况。以上是关于Azure Blob 存储客户端库 v12 设置代理的主要内容,如果未能解决你的问题,请参考以下文章
未在 Azure Blob 存储 v12 中计算 ContentHash
如何使用 .NET v12 SDK 在 Azure Blob 存储中上传具有指定 ContentType 的 Blob?
如何为 Azure Blob 存储中的文件夹生成共享访问签名?
与 v11 相比,使用 v12 将文件上传到 Azure Blob 存储 SDK 的 ASP.NET Core 使用更高的内存
上传大文件 Azure Blob .net SDK v12 问题
使用 Azure Java SDK V12 和 ListBlobs() 在 Azure Blobstorage 中列出 Blob 非常慢