如何解决CloudBlobDirectory' 不包含 'ListBlobs' 的定义,并且在 .net core 3.1 升级中没有可访问的扩展方法 'ListBlobs'
我正在将一个 .net45 应用程序升级到 .net core 3.1,我在那里有一段代码,如下所示。
private void GetContainerDirectories(IEnumerable<IListBlobItem> blobList)
{
// First list all the actual FILES within
// the current blob list. No recursion needed:
foreach (var item in blobList.Where
((blobItem,type) => blobItem is CloudBlockBlob))
{
var blobFile = item as CloudBlockBlob;
sb.Add(new Tree { Name = blobFile.Name,Id = blobFile.Name,ParentId = blobFile.Parent.Prefix,Title = Path.GetFileName(blobFile.Name),IsDirectory = false });
}
// List all additional subdirectories
// in the current directory,and call recursively:
foreach (var item in blobList.Where
((blobItem,type) => blobItem is CloudBlobDirectory))
{
var directory = item as CloudBlobDirectory;
sb.Add(new Tree { Name = directory.Prefix,Id = directory.Prefix,ParentId = directory.Parent.Prefix,Title = new DirectoryInfo(directory.Prefix).Name,IsDirectory = true });
// Call this method recursively to retrieve subdirectories within the current:
GetContainerDirectories(directory.ListBlobs()); ***////////Here i am getting error***
}
}
在最后一行 [ GetContainerDirectories(directory.ListBlobs()) ] 中,我收到 ListBlobs 错误,我无法为此找到任何有用的解决方案。像这样的错误 -
“CloudBlobDirectory”不包含“ListBlobs”的定义,并且找不到接受“CloudBlobDirectory”类型的第一个参数的可访问扩展方法“ListBlobs”(您是否缺少 using 指令或程序集引用?)
有谁知道如何解决这个问题?非常感谢 :)
解决方法
您使用的WindowsAzure.Storage
SDK 太旧,.net core
不支持此SDK 下的同步方法,ListBlobs
方法是同步方法。
我建议您改用最新的 SDK:
https://www.nuget.org/packages/Azure.Storage.Blobs/12.8.0
如果不想使用Azure.Storage.Blobs
SDK,可以使用WindowsAzure.Storage
SDK下的ListBlobsSegmentedAsync方法
更新:
您可以使用下面的代码代替原始代码:
var blobs = directory.ListBlobsSegmentedAsync(false,BlobListingDetails.Metadata,100,null,null).Result.Results;
GetContainerDirectories(blobs);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。