调用ListFilesAndDirectories获取Azure文件共享文件列表报错如何解决
Azure文件共享ListFilesAndDirectories方法报错解决方案
报错原因
- 你当前项目引用的Azure文件存储SDK版本和代码写法不匹配:
ListFilesAndDirectories()是旧版WindowsAzure.Storage或者Microsoft.Azure.Storage.File包中的同步方法,如果你使用的是新版Azure.Storage.Files.Shares包,该方法已被移除,替换为新的API。 - 即使使用旧版SDK,也可能是没有引入对应命名空间导致方法无法识别,需要补充
using Microsoft.Azure.Storage.File;指令。
解决方案
情况1:继续使用旧版SDK(Microsoft.Azure.Storage.File)
- 先卸载项目中已安装的其他版本Azure存储相关Nuget包
- 安装指定版本的旧版SDK,Nuget安装命令为:
Install-Package Microsoft.Azure.Storage.File -Version 11.2.3 - 在代码顶部补充引用:
using Microsoft.Azure.Storage.File;
配置完成后原有代码即可正常运行。
情况2:使用新版SDK(Azure.Storage.Files.Shares,官方推荐)
新版SDK已废弃ListFilesAndDirectories()方法,需改用GetFilesAndDirectories()方法实现相同功能,示例代码如下:
// 引入对应命名空间 using Azure.Storage.Files.Shares; using Azure.Storage.Files.Shares.Models; // 初始化文件共享客户端 ShareClient shareClient = new ShareClient("你的存储账户连接字符串", "目标文件共享名称"); // 获取根目录客户端 ShareDirectoryClient rootDirClient = shareClient.GetRootDirectoryClient(); // 遍历根目录下所有文件和文件夹 Console.WriteLine("Getting list of all files/directories under the root directory of the share."); foreach (ShareFileItem item in rootDirClient.GetFilesAndDirectories()) { string itemType = item.IsDirectory ? "CloudFileDirectory" : "CloudFile"; // 需要完整Uri可拼接为 $"{rootDirClient.Uri}/{item.Name}" Console.WriteLine(" - {0} (type: {1})", item.Name, itemType); }
内容的提问来源于stack exchange,提问作者AYD
相关产品推荐
相关产品推荐

