Azure存储连接字符串有效,获取Blob文件报URI不代表服务器资源错误
问题根源
你的错误出在GetBlobContainerClient的入参规则使用错误:
- 该方法的入参只能是独立的Blob容器名称,你把容器名
firstContainer和容器内的虚拟目录secondFolder用反斜杠拼接后传入,SDK会将整个字符串识别为容器名去发起请求,你的存储账户下根本不存在名称为firstContainer\secondFolder的容器,自然返回资源不存在的InvalidUri错误。 - Azure Blob的路径分隔符统一使用正斜杠
/,不支持Windows风格的反斜杠\,即使后续要指定虚拟目录前缀也不能用反斜杠。
修正后的实现代码
string connectionString = "DefaultEndpointsProtocol=https;AccountName=filesStorage;AccountKey=xxxx;EndpointSuffix=core.windows.net"; // 仅传入存储账户中真实存在的容器名称 string containerName = "firstContainer"; // 如需筛选容器内指定虚拟目录下的Blob,配置prefix参数,注意用正斜杠结尾 string targetFolderPrefix = "secondFolder/"; BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString); BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName); // 传入prefix参数拉取对应目录下的Blob,不需要筛选可直接省略该参数 var blobs = containerClient.GetBlobs(prefix: targetFolderPrefix); foreach (var item in blobs) { blobFilesList.Add(item.Name); }
内容的提问来源于stack exchange,提问作者CrazyCoder
相关产品推荐
相关产品推荐

