簡體   English   中英

帶有BlobRequestOptions的Azure Blob存儲DownloadTextAsync

[英]Azure blob storage DownloadTextAsync with BlobRequestOptions

使用azure blob存儲和Azure SDK,我當前正在下載一個字符串,如下所示:

var storageAccount = CloudStorageAccount.Parse(connectionString);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
var blockBlob = container.GetBlockBlobReference(blobUid);
var text = await blockBlob.DownloadTextAsync();

我想傳入blobRequestOptions來設置自定義重試策略,因此它看起來像這樣:

var storageAccount = CloudStorageAccount.Parse(connectionString);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
var blockBlob = container.GetBlockBlobReference(blobUid);
var blobRequestOptions = new BlobRequestOptions()
{
     RetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(5), 3)
};

var text await blockBlob.DownloadTextAsync(encoding, accessCondition, blobRequestOptions, operationContext);

我的問題是我不確定要為編碼,accessCondition或operationContext傳入什么。 我查看了文檔( https://msdn.microsoft.com/zh-cn/library/dn434829.aspx ),並進行了大量搜索,但我不知道要輸入什么。

編碼:在Us-En中,我的數據只是json,所以我認為使用ACSII或UTF-8會很好,但是我無法確定azure是否應使用默認值。

AccessCondition和OperationContext:不知道我應該傳遞什么。

或者,也許有一種更好的方法可以執行我想做的事情,而無需使用重載的DownloadTextAsync。

當我遇到這樣的問題並且很幸運該SDK是開源的時,我通常會檢查源代碼。 Azure存儲SDK的源代碼在這里:

https://github.com/Azure/azure-storage-net

因此,這是您要調用的方法:

public virtual Task<string> DownloadTextAsync(CancellationToken cancellationToken)
{
   return AsyncExtensions.TaskFromApm(this.BeginDownloadText, this.EndDownloadText, cancellationToken);
}

這基本上只是將BeginDownloadText方法從舊的APL模型轉換為新的基於TPL的調用。 如果您簽出BeginDownloadText:

public virtual ICancellableAsyncResult BeginDownloadText(AsyncCallback callback, object state)
{
    return this.BeginDownloadText(null /* encoding */, null /* accessCondition */, null /* options */, null /* operationContext */, callback, state);
}

您可以看到它們為編碼,accessCondition和operationContext明確指定了null值。 如果需要,您甚至可以進一步進行深入研究,但是我說您可以使用null作為不需要的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM