.Net Framework - 使用 SAS 上传 Blob
Posted
技术标签:
【中文标题】.Net Framework - 使用 SAS 上传 Blob【英文标题】:.Net Framework - Upload Blob using SAS 【发布时间】:2022-01-17 09:00:51 【问题描述】:我问过类似的question,但那是针对 .Net 核心的。不幸的是,我必须使用 .net 框架来完成与 ADF 不支持 .Net Core 中的自定义组件相同的工作。
简介 我正在尝试使用 .net 框架 SDK 将文件上传到 Azure Blob。代码如下:
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UploadBlobAndUpdateMetadata
class Program
static void Main(string[] args)
try
string storageAccntConnection = "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=****";
string blobFilePath = @"*****\\log.20210801.003851.txt";
string blobContainer = "dropoff-commissionstatements";
var cloudBlockBlob = new CloudBlockBlob(new Uri(storageAccntConnection));
cloudBlockBlob.UploadFromFile(blobFilePath);
catch (Exception ex)
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine(ex.InnerException.Message);
Console.Write("File uploaded to techblobcontainer container");
Console.ReadLine();
错误
如果我将连接字符串更改为以下,我会得到 403 Forbidden
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=*****
问题不能出在连接字符串中,因为我可以使用 .Net Core 实现相同的目标。
【问题讨论】:
看看error codes for blob storage: (409) 冲突通常意味着 blob 已经存在。您正在尝试上传另一个具有完全相同名称的 blob,但它不会让您 是的,我检查过了,但 blob 不存在 【参考方案1】:考虑到 CloudBlockBlob
将 blob 的 URI 作为参数,请尝试将您的 storageAccntConnection
更改为:
string storageAccntConnection = "https://<account-name>.blob.core.windows.net/<container-name e.g. dropoff-commissionstatements>/<blob-name e.g. log.20210801.003851.txt>?sp=racwdl&st=2021-12-08T01:14:01Z&se=2022-02-28T09:14:01Z&spr=https&sv=2020-08-04&sr=c&sig=****";
那么你的代码应该可以工作了。
【讨论】:
以上是关于.Net Framework - 使用 SAS 上传 Blob的主要内容,如果未能解决你的问题,请参考以下文章
Azure 存储:如何使用 .NET SDK 生成 SAS 连接字符串