尝试使用 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=####
错误详情
服务器未能验证请求。确保 Authorization 标头的值正确形成,包括签名。RequestId:ed57ec28-f01e-00a9-79d2-ebcfc2000000 Time:2021-12-08T01:22:40.1147833Z 状态:403(服务器未能验证请求。确保 Authorization 标头的值包含签名正确形成。)错误代码: 认证失败
附加信息:AuthenticationErrorDetail:sp 是必需的。不能为空
内容:
AuthenticationFailed
服务器未能验证请求。确保 Authorization 标头的值正确形成,包括签名。RequestId:ed57ec28-f01e-00a9-79d2-ebcfc2000000 时间:2021-12-08T01:22:40.1147833Zsp 是强制性的。不能为空标头:x-ms-request-id:ed57ec28-f01e-00a9-79d2-ebcfc2000000 x-ms-error-code:AuthenticationFailed 内容长度:407 内容类型:应用程序/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);