替换 Azure Blob 存储中的文件时出现错误 500

Posted

技术标签:

【中文标题】替换 Azure Blob 存储中的文件时出现错误 500【英文标题】:Error 500 when replacing file in Azure Blob Storage 【发布时间】:2020-09-20 11:09:50 【问题描述】:

您好,我遇到了一个错误,当我替换文件时,它返回“500 内部服务器错误”。但是当我上传新文件时一切正常。

这是我的代码:

public async Task UploadContentBlobAsync(IFormFile formFile, string fileName)

    var blobClient = _containerClient.GetBlobClient(fileName);
    await blobClient.UploadAsync(formFile.OpenReadStream());

根据这个sourceAzure 只会替换我的文件以上传到现有文件,但我的情况不会发生这种情况。

【问题讨论】:

您确定 500 错误来自存储而不是来自您的 Web 应用程序吗? 我正在使用 POSTMAN,所以我不知道。也许来自我的 Web 应用程序,有什么提示可以改进我的代码,以便我可以替换我的 blob 存储上的现有文件?我可以使用 Azure 存储资源管理器手动替换。所以也许我的代码是问题所在。 任何细节错误?无论如何,如果您上传已经存在的文件,您应该使用这个:await blobClient.UploadAsync(yourstream, true);。 bool 值默认为 false。 嗨,有更新吗? 尚未测试。我暂停了这个的开发。一旦我们恢复上传图片的开发,我们会尽快回复您。 【参考方案1】:

我正在使用Azure.Storage.Blobs 12.4.3,我创建了一个方法并将请求作为参数传递。以下代码有效,替换blob内容时不会报错:

string connectionString = "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net";

string containerName = "video";

string fileName = "1.png";

BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);

BlobClient blobClient = containerClient.GetBlobClient(fileName);

await blobClient.UploadAsync(req.Body, true);

(我把图片是二进制格式的,放到request里面。)

在我使用的包中,UploadAsync方法的参数中关于是否覆盖blob的布尔值为false,所以我必须提供一个true,否则会报错。

大家可以根据我提供的包版本和代码做个实验看看能不能正确执行。如果不是,请提供详细的错误信息。:)

【讨论】:

以上是关于替换 Azure Blob 存储中的文件时出现错误 500的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure Blob 存储中上传文件时出现 InvalidAuthenticationInfo 错误

尝试将生成的 pdf 文件上传到 Azure Blob 存储时出现 404 错误

在从 blob 存储中获取文件并传递给模型进行预测时出现 azure aci webservice 的超时错误

创建 Azure 存储 Blob 容器时出现错误 403(已启用存储防火墙

从 Azure Blob 存储文件名下载文件时出现的问题包含哈希 (#)

尝试在 Web API 请求上检索 Azure Blob 时出现 403 错误