替换 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(已启用存储防火墙