Azure Blob 存储 - sp 是必需的。不能为空

Posted

技术标签:

【中文标题】Azure Blob 存储 - sp 是必需的。不能为空【英文标题】:Azure Blob Storage - sp is mandatory. Cannot be empty 【发布时间】:2022-01-13 01:00:45 【问题描述】:

尝试使用 SAS 链接将文件上传到 Azure Blob 存储时出现错误。它是一个抱怨空 sp 属性的身份验证错误。奇怪的是 Sp 元素存在于 SAS Url 中。

这不是权限问题,因为我可以使用 ADF 使用相同的 SAS URL 上传文件。

网址

BlobEndpoint=https://####.blob.core.windows.net/####?sp=racwdl&st=2021-12-08T01:14:01Z&se=2022-02-28T09:14:01Z&spr =https&sv=2020-08-04&sr=c&sig=####

错误详情

服务器未能验证请求。确保值 授权标头正确形成,包括签名。 请求ID:ed57ec28-f01e-00a9-79d2-ebcfc2000000 时间:2021-12-08T01:22:40.1147833Z 状态:403(服务器失败 验证请求。确保 Authorization 标头的值 正确形成包括签名。)错误代码: 认证失败

附加信息:AuthenticationErrorDetail:sp 是必需的。 不能为空

内容:AuthenticationFailedServer 未能验证请求。确保值 授权标头正确形成,包括签名。 请求ID:ed57ec28-f01e-00a9-79d2-ebcfc2000000 时间:2021-12-08T01:22:40.1147833Zsp 是强制性的。不能为空

标头:x-ms-request-id:ed57ec28-f01e-00a9-79d2-ebcfc2000000 x-ms-错误代码:AuthenticationFailed 内容长度:407 内容类型:application/xml 日期:2021 年 12 月 8 日星期三 01:22:39 GMT 服务器:Microsoft-HTTPAPI/2.0

代码

Stream file = new FileStream(fileToUpload, FileMode.Open);
                var blobServiceClient1 = new BlobServiceClient(endpointString);
                var containerRef = blobServiceClient1.GetBlobContainerClient("dropoff-commissionstatements");
                var blob1 = containerRef.GetBlobClient("TDM_FINAL_102449_13092021_COMMSTMT_AR_TAL_D95337.csv");
                string file_extension = Path.GetExtension(fileToUpload);
                string filename_withExtension = Path.GetFileName(fileToUpload);
                blob1.Upload(file);

【问题讨论】:

【参考方案1】:

请尝试将连接字符串更改为:

BlobEndpoint=https://####.blob.core.windows.net/####; SharedAccessSignature=sp=racwdl&st=2021-12-08T01:14:01Z&se=2022-02-28T09:14:01Z&spr=https&sv=2020-08-04&sr=c&sig=####

更多详情请看此链接:https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#create-a-connection-string-using-a-shared-access-signature。

【讨论】:

Gaurav - 我收到此错误 - 找不到有效的帐户信息组合。 我再次尝试通过您提供的 URL 和它现在工作。我会支持你的答案

以上是关于Azure Blob 存储 - sp 是必需的。不能为空的主要内容,如果未能解决你的问题,请参考以下文章

通过直接 URL 浏览时上传到 Azure Blob 存储的图像不可用

Azure Blob 存储和流分析

Azure 存储资源管理器 - 资源类型访问不足

使用 /mnt/ 将数据从 Azure Blob 存储读取到 Azure Databricks

在不使用 Azure SDK 的情况下使用 REST API 将流上传到 Azure Blob 存储

Blob 存储帐户的 Azure SAS 令牌不起作用