.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 连接字符串

使用 Azure.Storage.Blobs 通过 .NET Core 3.1 生成 SAS 到期令牌

怎样查看.net framework的版本?

安装net framework2.0,装不上怎么办?

win10不能安装NET framework

windows10上安装 .NET Framework 3.5