如何使用 C# 连接到 Blob 存储容器

Posted

技术标签:

【中文标题】如何使用 C# 连接到 Blob 存储容器【英文标题】:How to connect to blob storage container using c# 【发布时间】:2022-01-02 21:42:20 【问题描述】:

我需要连接到 blob 存储容器并检索容器内的数据。我没有需要通过访问令牌连接的连接字符串。我有使用连接字符串与 blob 通信的代码。任何人都可以根据与访问密钥的通信修改代码并从容器中检索这些数据。

string storageConnectionString = "";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("ContainerName");
CloudBlockBlob blob = container.GetBlockBlobReference("FileName");
string xmlFile = blob.DownloadTextAsync().Result;
Console.WriteLine(xmlFile);

【问题讨论】:

具体说的是什么token? Azure AD 令牌?如果是,则有setup you need to do,如果尚未完成。 【参考方案1】:

这是对我有用的代码

using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
using System;

namespace ConsoleApp3

    class Program
    
        static void Main(string[] args)
        
            string storageAccountName = "<YOUR STORAGE ACCOUNT>";
            string containerName = "<YOUR CONTAINER NAME>";
            string sasToken = "<YOUR SAS TOKEN>";
            StorageCredentials creds;
            CloudBlobContainer cloudBlobContainer;
            creds = new StorageCredentials(sasToken);

            cloudBlobContainer = new CloudBlobContainer(new Uri("https://" + storageAccountName + ".blob.core.windows.net/" + containerName), creds);
            BlobContinuationToken blobContinuationToken = null;
            var blobs = cloudBlobContainer.ListBlobsSegmentedAsync("", blobContinuationToken);
            var blob = blobs.Result;
            foreach (var i_blob in blob.Results)
            
                Console.WriteLine(i_blob.Uri);
            

            Console.ReadKey();
        
    

结果:

参考: Access blob by sas token

【讨论】:

我在这一行“var blob = blobs.Result;”中遇到错误-> 此帐户不允许公开访问 我希望您正在安装 Microsoft.WindowsAzure.Storage.Auth 和 Microsoft.WindowsAzure.Storage.Blob nuget 包。如果这仍然不起作用,请尝试 foreach (var i_blob in blobs.Results) 并删除您收到错误的行。 您的问题解决了吗?

以上是关于如何使用 C# 连接到 Blob 存储容器的主要内容,如果未能解决你的问题,请参考以下文章

将 DataBricks 连接到 Azure Blob 存储

如何使用 SAS 令牌从 C# 连接到 Azure BlobStorage?

如何使用 c# 从 azure blob 存储中检索 xml 文件

如何将 blob 上传到 C# 函数中的现有容器

无法使用 InteractiveBrowserCredential 连接到 Azure Blob 存储

如何连接到 tableview 容器?