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

如何使用C#通过访问令牌连接Blob存储容器并读取数据

修改方案

前置准备

你需要先获取到对应Blob存储的有效访问令牌,常用的有两类:

  • Azure AD颁发的访问令牌:权限范围(scope)需配置为https://storage.azure.com/.default,且令牌对应的身份已分配目标容器的存储Blob数据读取者角色
  • SAS(共享访问签名)令牌:需提前在存储账户/容器层面生成带读取权限的SAS令牌

修改后代码(Azure AD访问令牌版)

// 替换为你实际获取到的Azure AD访问令牌
string accessToken = "你的有效访问令牌";
// 替换为你的存储账户名称
string storageAccountName = "你的存储账户名";
// 构造存储凭证
var credentials = new StorageCredentialsToken(storageAccountName, accessToken);
// 构造Blob客户端,存储账户Blob端点格式固定为https://<存储账户名>.blob.core.windows.net/
var blobClient = new CloudBlobClient(new Uri($"https://{storageAccountName}.blob.core.windows.net/"), credentials);

// 后续逻辑和原代码完全一致,无需修改
CloudBlobContainer container = blobClient.GetContainerReference("ContainerName");
CloudBlockBlob blob = container.GetBlockBlobReference("FileName");
string xmlFile = blob.DownloadTextAsync().Result;
Console.WriteLine(xmlFile);

修改后代码(SAS令牌版)

如果你持有的是SAS令牌,用以下方式构造即可:

// 替换为你实际的SAS令牌,格式为?sv=xxxx&ss=xxxx...
string sasToken = "你的SAS令牌";
string storageAccountName = "你的存储账户名";
var credentials = new StorageCredentials(sasToken);
var blobClient = new CloudBlobClient(new Uri($"https://{storageAccountName}.blob.core.windows.net/"), credentials);

// 后续逻辑和原代码完全一致
CloudBlobContainer container = blobClient.GetContainerReference("ContainerName");
CloudBlockBlob blob = container.GetBlockBlobReference("FileName");
string xmlFile = blob.DownloadTextAsync().Result;
Console.WriteLine(xmlFile);

注意事项

  • Azure AD访问令牌默认有效期为1小时,过期前需要重新申请新的令牌更新凭证,否则会鉴权失败
  • 确保访问令牌的权限覆盖目标容器的读取操作,否则会返回403拒绝访问错误
  • 需要提前安装NuGet包:Microsoft.Azure.Storage.Blob,版本和你原有代码使用的版本保持一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:45:04