You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确获取Azure Blob存储内容并将其转换为C#对象

问题原因

你的代码存在两个核心错误:

  1. BlobClient.DownloadContent() 返回的是 Response<BlobDownloadResult> 类型,你直接将整个响应对象传入 BinaryData 构造函数,相当于序列化了整个响应结构体(包含元数据+空Content的结构),没有取到真实的Blob内容。
  2. 反序列化完成后你返回的是入参的 token 对象,而非反序列化得到的 result 对象,就算内容读取成功也拿不到正确结果。

正确实现代码

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");
        
        // 下载内容后直接取响应Value的Content属性,就是你存储的原始二进制内容
        var downloadResult = blobClient.DownloadContent();
        BinaryData blobContent = downloadResult.Value.Content;
        
        // 直接用BinaryData的反序列化方法,无需手动转字节、转字符串
        Token result = blobContent.ToObjectFromJson<OAuthToken>();
        // 沿用你原有JsonConvert写法也兼容:
        // string contentStr = blobContent.ToString();
        // Token result = JsonConvert.DeserializeObject<OAuthToken>(contentStr);

        return result;
    }
    catch (Exception e)
    {
        // 实现错误日志逻辑
        throw; // 不建议吞异常,方便后续问题排查
    }
}

补充说明

  • 如果是异步场景,换用 await blobClient.DownloadContentAsync() 即可,其余逻辑一致。
  • 上传Blob的时候建议显式设置ContentType为application/json,避免后续其他业务逻辑读取时出现格式识别问题。
  • 确认你的OAuthToken类的属性名和JSON字段完全匹配,或者加JsonProperty属性做映射,避免反序列化时字段值为空。

内容的提问来源于stack exchange,提问作者USMC6072

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:36:02