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

如何通过Azure Front Door使用C#上传文件到Azure Blob Storage

通过Azure Front Door向Blob Storage上传文件的C#实现方案

为什么直接修改连接字符串不生效

Azure.Storage.Blobs SDK的连接字符串解析逻辑默认绑定存储账户的原生端点规则,会校验EndpointSuffix的合法性,直接将core.windows.net替换为azurefd.net不符合SDK的内部解析逻辑,因此无法生效。

前置配置(必须先完成)

  • 你的Azure Front Door实例已经配置指向目标Blob存储账户的源组,源类型选择存储 blob,回源协议设置为HTTPS
  • 编辑AFD对应的路由规则,放行PUT、POST、PATCH等上传所需的HTTP方法,AFD默认路由规则仅放行GET、HEAD请求,未放行的方法会直接被拦截
  • 确认通过AFD端点已经可以正常下载Blob文件,保证基础的路由和回源配置正常

C#代码实现

方案1:SAS令牌认证(推荐,跨场景兼容性最好)

using Azure.Storage.Blobs;

// 替换为你的AFD端点,结尾不要加斜杠
var afdEndpoint = new Uri("https://你的AFD实例名.azurefd.net");
// 替换为你生成的具有对应容器写入权限的SAS令牌,开头带?
var sasToken = "?sv=2022-11-02&ss=b&srt=sco&sp=rwdlac&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxxxx";

// 直接构造带SAS的AFD端点创建Blob客户端
var blobServiceClient = new BlobServiceClient(new Uri($"{afdEndpoint}{sasToken}"));

// 后续上传逻辑和原生Blob SDK用法完全一致
var containerClient = blobServiceClient.GetBlobContainerClient("目标容器名");
var blobClient = containerClient.GetBlobClient("目标Blob名称");
// 上传本地文件
await blobClient.UploadAsync("本地文件路径", overwrite: true);

方案2:存储账户密钥认证(兼容原有连接字符串逻辑)

不需要修改原有存储账户连接字符串,自定义客户端端点即可:

using Azure.Storage;
using Azure.Storage.Blobs;

// 原有存储账户连接字符串,无需修改
var originalConnStr = "DefaultEndpointsProtocol=https;AccountName=你的存储账户名;AccountKey=你的存储账户密钥;EndpointSuffix=core.windows.net";
// 替换为你的AFD端点
var afdEndpoint = new Uri("https://你的AFD实例名.azurefd.net");

// 从原连接字符串解析认证信息
var sharedKeyCredential = StorageSharedKeyCredential.FromConnectionString(originalConnStr, out _);

// 用AFD端点+原有认证信息创建客户端
var blobServiceClient = new BlobServiceClient(afdEndpoint, sharedKeyCredential);

// 后续上传逻辑和原生用法完全一致
var containerClient = blobServiceClient.GetBlobContainerClient("目标容器名");
await containerClient.GetBlobClient("目标Blob名称").UploadAsync("本地文件路径", overwrite: true);

注意事项

  • AFD仅做流量转发,不会修改请求里的认证信息,存储账户的私有访问、防火墙规则等配置无需额外调整,只要保证AFD的回源请求可以正常访问存储账户即可
  • 大文件分片上传、断点续传等场景完全兼容,不需要修改原有业务逻辑
  • 如果你使用的是旧版Microsoft.Azure.Storage.BlobSDK,逻辑完全一致,仅需要自定义Blob服务的端点即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:06:06