当前位置: 首页 > 知识库问答 >
问题:

从Uri和BlobServiceClient创建Azure BlobClient

颜高朗
2023-03-14

在Azure Storage v12 SDK中,如何创建具有blob URI和BlobServiceClient的blob客户端?

在v11中,我们可以通过以下方式实现:

var cloudBlockBlob = new CloudBlockBlob(<Blob URI>, <Cloud Blob Client>);

我已经通过以下黑客方式做到了这一点,我必须首先创建一个blobClient对象来获取容器和客户端名称。我无法使用初始客户端访问blob,因为我正在获取AuthenticationFailed错误。

var sasUri = _blobServiceClient.GenerateAccountSasUri(
    AccountSasPermissions.Read, DateTimeOffset.UtcNow.AddDays(10),
        AccountSasResourceTypes.Object);
var sasCredential = new AzureSasCredential(sasUri.ToString());

// this is not valid as I get an Authentication Exception if I try to access from here
var blobClient = new BlobClient(blobUri, sasCredential); 

BlobContainerClient blobContainerClient = 
    _blobServiceClient.GetBlobContainerClient(blobClient.BlobContainerName);
blobClient = blobContainerClient.GetBlobClient(blobClient.Name);
BlobDownloadInfo blobDownloadInfo = await blobClient.DownloadAsync(cancellationToken);

我很确定我在这里做错了什么,并且有更好的方法来做到这一点。我如何在v12中正确地实现这一点?

共有2个答案

田骁
2023-03-14

伊凡的回答是正确的。本质上,问题在于AzuresaCredential需要SAS令牌,而不是URL。

从SAS URL获取令牌的另一种方法是:

var sasCredential = new AzureSasCredential(sasUri.Query);
谷泽宇
2023-03-14

只需更改这一行代码:

var sasCredential = new AzureSasCredential(sasUri.ToString());

var sasCredential = new AzureSasCredential(sasUri.ToString().Split('?')[1]);
 类似资料:
  • 问题内容: 我需要为我的项目创建一个自定义URI方案。即 -不透明的表示 -分层表示。 如何将方案添加到Java URI类?或者,如何使Java URI理解我的方案,以便可以在代码中使用它? 欢迎提供具体示例。 谢谢。 问题答案: 您确定需要创建一个新的URI方案吗? 创建特定于实现的方案被认为是不好的做法。 看到: http://infomesh.net/2001/09/urischemes h

  • 问题内容: MySQL中有没有办法从DATE类型的给定属性和TIME类型的给定属性创建DATETIME? 问题答案:

  • 我有一个类似这样的JSON: 我正在尝试将此结构映射到 Spark 架构。我已经创建了以下内容;但是它不起作用。我还尝试在值字段映射中移除。 另外,请注意,它们“key1”和“key2”是动态字段,将使用唯一标识符生成。也可以有两个以上的键。有没有人能够将数组类型映射到结构类型?

  • 我试图从服务创建一个基于WSDL的代理。此服务运行在tomcat服务器中,该服务器已配置为只接受使用TLSV1.2的安全连接。并且该服务在运行wso2server的intranet之外。 当我测试基于wsdl的代理模板中的wsdl uri时,问题就会出现,并启动系统以下警报:“无效的wsdl uri(无法建立连接)”。我不得不说,wso2esb与外部有连接,问题不在于访问这个url,因为: nul

  • 我的REST控制器需要以下格式的请求输入,它成功地将其转换为包含映射和字符串作为参数的Java对象: 我从html表单中获取数据,如下所示: 基本上,这段代码可以归结为: 这会导致包含{key1=的映射 但是,我最终会得到以下字符串:'{"myMap":{},"String":"myString"}'。所以我可能必须做一些不同的事情来对地图进行字符串化,但是我尝试的都不起作用。 有人能帮我吗?

  • 问题内容: 我目前有一种方法可以检查3x3网格中中心项周围的内容,如果8个相邻位置中的内容包含我要检查的内容,我想在长度为7的数组上将该正方形标记为1。 为此,我需要在我的方法中创建并返回一个数组,这可能吗? 问题答案: 不知道是什么问题。你是这个意思?