You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure.Storage.Blobs 12.10使用SAS令牌上传Blob问题求助

Azure.Storage.Blobs 12.10版本SAS令牌场景适配方案

核心问题原因

你在12.10版本代码中给BlobClient构造函数传入的第二个null参数会覆盖Uri自带的SAS认证信息,导致认证失败;额外的BlobUriBuilder转换不是必要操作,也可能因Uri解析异常引发问题。

适配后代码示例

上传功能

var name = Guid.NewGuid().ToString();
// 直接拼接带SAS令牌的完整Blob访问Uri,注意subToken不要重复带?前缀
var fullBlobUri = new Uri($"https://MyStorageAccount.blob.core.windows.net/myimages/{App.User.EmailAddress}/{name}.jpg?{subToken}");
// 仅传入带SAS的Uri构造BlobClient即可
var blobClient = new BlobClient(fullBlobUri);

using var uploadStream = File.OpenRead(file.Path);
await blobClient.UploadAsync(uploadStream);
// using关键字会自动释放流,不需要手动调用Close方法

删除功能

// 拼接待删除Blob的带SAS完整Uri,SAS需提前授予删除权限
var deleteBlobUri = new Uri($"https://MyStorageAccount.blob.core.windows.net/myimages/{App.User.EmailAddress}/目标Blob名称.jpg?{subToken}");
var deleteBlobClient = new BlobClient(deleteBlobUri);

await deleteBlobClient.DeleteAsync();

注意事项

  • 预生成的SAS令牌需要匹配操作权限:上传需开启写入权限,删除需开启删除权限,且令牌有效期需覆盖操作时间
  • 拼接Uri时如果subToken已经自带?前缀,需要去掉拼接语句中的?,避免出现双?导致SAS解析失效
  • 若需要额外配置请求超时、重试策略等参数,可传入自定义的BlobClientOptions作为第二个参数,不会影响SAS认证的识别

内容的提问来源于stack exchange,提问作者John Norton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:27:01