.NET Core API上传文件至ADLS2时遇InvalidUri错误求助
解决ADLS2文件上传的InvalidUri错误
问题根源
你的代码存在两个关键问题导致无效URI错误:
- 未指定文件系统(容器)名称:
DataLakeFileSystemClient的实例需要关联到具体的ADLS2文件系统,仅传入账户DFS URI不足以构建有效客户端。 - 路径使用Windows反斜杠:ADLS2的路径遵循URI规范,必须使用正斜杠
/,而非Windows系统的反斜杠\。
修正后的代码
var credential = new Azure.Identity.DefaultAzureCredential(); // 构造文件系统客户端时指定文件系统名称,或直接使用包含文件系统的完整URI var fileSystemClient = new DataLakeFileSystemClient( new Uri("https://mystorageaccount.dfs.core.windows.net/your-filesystem-name"), credential); // 将路径中的反斜杠替换为正斜杠 DataLakeFileClient fileClient = fileSystemClient.GetFileClient($"general/landing/{objectPushRequest.File.Name}"); using (Stream fileStream = objectPushRequest.File.OpenReadStream()) { await fileClient.UploadAsync(fileStream, true); message = BuildMessage(Status.Success, ErrorCodes.NoError, "Object Push service uploaded file to Blob"); return (message, null); }
额外说明
- 替换
your-filesystem-name为你Azure门户中实际创建的ADLS2文件系统名称。 - 如果需要从配置读取文件系统名称,可以使用
DataLakeFileSystemClient的另一个构造重载:var fileSystemClient = new DataLakeFileSystemClient( new Uri("https://mystorageaccount.dfs.core.windows.net"), "your-filesystem-name", credential);
内容的提问来源于stack exchange,提问作者Sandeep Thomas
相关产品推荐
相关产品推荐

