gpt4 book ai didi

azure CloudBlobDirectory.ListBlobs() 返回 "The specified resource does not exist.",但 fetchAttributes() 使用相同的数据

转载 作者:行者123 更新时间:2023-12-04 06:09:31 24 4
gpt4 key购买 nike

当我尝试迭代 ListBlobs() 调用的结果时,出现“指定的资源不存在”异常。当我直接访问它时,我可以获取 blob 属性,但我正在尝试获取子目录中所有 blob 的列表。

我写了这个小测试来看看问题到底出在哪里。我这里有一个测试驱动程序和两种方法。第一个方法“GetBlockBlobDateTime”运行良好并返回现有 Blob 的日期时间。第二种方法“GetBlobDirFiles”使用相同的输入,并在我尝试迭代 blobItems 时抛出异常。

foreach (IListBlobItem blobItem in blobItems)

请注意,两种方法使用相同的数据。我错过了什么?

    public static void DoTest(string baseURL, string container, string directory, string fileName)
{
DateTime t = GetBlockBlobDateTime( baseURL, container, directory, fileName);
List<string> fileList = GetBlobDirFiles( baseURL, container, directory);
}

public static DateTime GetBlockBlobDateTime(string baseURL, string container, string directory, string fileName)
{
CloudBlobClient blobClient = new CloudBlobClient(baseURL);
CloudBlobDirectory blobDir = blobClient.GetBlobDirectoryReference(container);
CloudBlobDirectory subDirectory = blobDir.GetSubdirectory(directory);
CloudBlockBlob cloudBlockBlob = subDirectory.GetBlockBlobReference(fileName);
cloudBlockBlob.FetchAttributes();
DateTime cloudTimeStampUTC = cloudBlockBlob.Properties.LastModifiedUtc;
return cloudTimeStampUTC;
}

public static List<string> GetBlobDirFiles(string baseURL, string container, string directory)
{
CloudBlobClient blobClient = new CloudBlobClient(baseURL);
CloudBlobDirectory blobDir = blobClient.GetBlobDirectoryReference(container);
CloudBlobDirectory subDirectory = blobDir.GetSubdirectory(directory);
IEnumerable<IListBlobItem> blobItems = subDirectory.ListBlobs();

List<string> fileList = new List<string>();
foreach (IListBlobItem blobItem in blobItems)
{
fileList.Add(blobItem.Uri.ToString());
}
return fileList;
}

最佳答案

好吧,我明白了:

显然,您不需要权限来获取文件属性,但需要列出目录中的文件。

    CloudBlobClient blobClient = new CloudBlobClient(baseURL);

当您要获取如下属性时有效:

    cloudBlockBlob.FetchAttributes();

但是您需要提供如下凭据:

    CloudBlobClient blobClient = 
new CloudBlobClient(baseURL,
new StorageCredentialsAccountAndKey(myAccount, myKey));

当您要像这样列出 blob 时:

        var blobList = subDirectory.ListBlobs();
foreach (var blobInfo in blobList)

关于azure CloudBlobDirectory.ListBlobs() 返回 "The specified resource does not exist.",但 fetchAttributes() 使用相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com