【问题标题】:Error 500 when replacing file in Azure Blob Storage替换 Azure Blob 存储中的文件时出现错误 500
【发布时间】: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。
  • 嗨,有更新吗?
  • 尚未测试。我暂停了这个的开发。一旦我们恢复上传图片的开发,我们会尽快回复您。

标签: asp.net azure-blob-storage


【解决方案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,否则会报错。

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

【讨论】:

    猜你喜欢
    • 2020-01-06
    • 2021-06-10
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2012-04-16
    • 2022-08-03
    • 2018-08-18
    • 2019-10-01
    相关资源
    最近更新 更多