不确定使用 SharedAccess 令牌列出 blob 的正确方法

Unsure of correct method to list blobs with a SharedAccess Token

我已将 WindowsAzure.Storage 升级到 4.0.3 我想将文件夹中的 blob 列表输出到网页,单击 link 可下载 blob。由于 blob 位于安全容器中,因此每个 URI 都需要共享访问签名。

我曾经有过:

var dir = Container.GetDirectoryReference(folderName);
List<IListBlobItem> blobs = dir.ListBlobs().ToList();

var blobsInFolder = new List<Uri>();
foreach (IListBlobItem listBlobItem in blobs)
{   
    var blob = Container.GetBlockBlobReference(listBlobItem.Uri.ToString());      
    string sasBlobToken = blob.GetSharedAccessSignature(_sasConstraints);            
    blobsInFolder.Add(new Uri(blob.Uri + sasBlobToken));    
}
return blobsInFolder;

这不再有效,因为 GetBlockBlobReference 不再接受 URI,而是接受文件名。 IListBlobItem 不包括文件名。

我可以开始分解 Uri 以获取文件夹和文件名

var blob = Container.GetBlockBlobReference(folderName + "/" + Path.GetFileName(listBlobItem.Uri.AbsolutePath));

...但我觉得这是错误的方式(我不应该这样做?)。有人可以指出正确的方法吗?

尝试将 IListBlobItem 转换为 CloudBlockBlob

foreach (IListBlobItem listBlobItem in blobs)
{   
    var blob = (CloudBlockBlob) listBlobItem;      
    string sasBlobToken = blob.GetSharedAccessSignature(_sasConstraints);            
    blobsInFolder.Add(new Uri(blob.Uri + sasBlobToken));    
}
return blobsInFolder;