【发布时间】:2021-11-08 05:45:43
【问题描述】:
我以前从未这样做过,但我通过将对象转换为字符串并流式传输到 Azure 来将其保存到 Azure Blob 存储。我检查了 Azure 中的 blob,它看起来完全符合我的预期,如下所示:
{"ClientID":"xxxx.xxxxxxxx.xxxx","ClientSecret":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxx","RedirectURL":"","GrantToken":"GRANT token","RefreshToken":null,"AccessToken":null,"ExpiresIn":null,"UserMail":null,"Id":null}
当我检索 blob 时,我似乎只获取元数据并且 Content 元素是空白的。这是检索 blob 的代码
public Token GetToken(UserSignature user, Token token)
{
try
{
var connectionString = "connection-string-goes-here";
BlobClient blobClient = new BlobClient(connectionString, "container-name-goes-here", "blob-name-goes-here");
var download = blobClient.DownloadContent();
BinaryData data = new BinaryData(download);
var test = data.ToArray();
var test2 = Encoding.UTF8.GetString(test);
Token result = JsonConvert.DeserializeObject<OAuthToken>(test2);
return token;
}
catch (Exception e)
{
//ToDo: implement error logging to blob
}
这是调用 '''GetString(test)''' 后的结果。最后一个元素是 Content,它是空的。
{"Value":{"Details":{"BlobType":0,"ContentLength":236,"ContentType":"application/octet-stream","ContentHash":"t6oIPlIWyChaWSo9tseiMw==","LastModified":"2021-09-12T18:14:36+00:00","Metadata":{},"ContentRange":null,"ETag":"\u00220x8D976192D9F53B0\u0022","ContentEncoding":null,"CacheControl":null,"ContentDisposition":null,"ContentLanguage":null,"BlobSequenceNumber":0,"CopyCompletedOn":"0001-01-01T00:00:00+00:00","CopyStatusDescription":null,"CopyId":null,"CopyProgress":null,"CopySource":null,"CopyStatus":0,"LeaseDuration":0,"LeaseState":0,"LeaseStatus":0,"AcceptRanges":"bytes","BlobCommittedBlockCount":0,"IsServerEncrypted":true,"EncryptionKeySha256":null,"EncryptionScope":null,"BlobContentHash":null,"TagCount":0,"VersionId":null,"IsSealed":false,"ObjectReplicationSourceProperties":null,"ObjectReplicationDestinationPolicyId":null,"LastAccessed":"0001-01-01T00:00:00+00:00"},"Content":{}}}
我需要获取 blob 并将其转回 C# 对象。我读过很多文章,它们都展示了一种略有不同的做法。提前感谢您的帮助。
【问题讨论】:
标签: c# azure azure-blob-storage