创建Azure追加Blob时遭遇“指定Blob不存在”错误求助
解决Azure Append Blob追加时出现的“The specified blob does not exist”错误
问题根源在于Append Blob的特性差异:普通Blob的Upload方法会自动创建不存在的Blob,但Append Blob的AppendBlock方法要求Blob必须已存在,直接调用会触发404错误。
修改你的AppendTextToAzureBlob方法,在追加数据前先调用CreateIfNotExists()创建目标Append Blob(不存在时自动创建):
public static String AppendTextToAzureBlob(String aText) { String lBlobName = $"appendblob_{DateTime.UtcNow:yyyyMMddHH}"; try { // 1. 确保容器存在 BlobServiceClient lBlobServiceClient = new BlobServiceClient(GetConnectionString()); BlobContainerClient lBlobContainerClient = lBlobServiceClient.GetBlobContainerClient(_BlobContainerName); lBlobContainerClient.CreateIfNotExists(PublicAccessType.BlobContainer); // 2. 获取Append Blob客户端,先创建Blob(如果不存在) AppendBlobClient lBlobClient = lBlobContainerClient.GetAppendBlobClient(lBlobName); // 关键步骤:创建不存在的Append Blob lBlobClient.CreateIfNotExists(); // 3. 追加日志文本 using MemoryStream lStream = new(Encoding.UTF8.GetBytes(aText)); lStream.Position = 0; var lResult = lBlobClient.AppendBlock(lStream); return "OK"; } catch (Exception ex) { return ex.Message; } }
对比你之前正常运行的SaveTextToAzureBlob方法:普通BlobClient的Upload方法内部会自动处理不存在Blob的创建逻辑,但AppendBlobClient没有这个自动创建机制,必须显式调用创建方法后才能执行追加操作。
内容的提问来源于stack exchange,提问作者user3427399
相关产品推荐
相关产品推荐

