尝试将图像上传到 Azure 但得到 404

dsb*_*dsb 2 asp.net azure

我正在尝试将图像从服务器上传到 Azure:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(GLOBAL_AZURE.AZURE_STORAGE_CONNECTION_STRING);
CloudBlobContainer container = storageAccount.CreateCloudBlobClient().GetContainerReference("my-container");

CloudBlockBlob blockBlob = container.GetBlockBlobReference("my-img.jpg");
using (FileStream img = File.Open("d:\...\my-img.jpg",FileMode.Open))
{
    blockBlob.UploadFromStream(img);
}
Run Code Online (Sandbox Code Playgroud)

一切正常,直到UploadFromStream抛出:

"The remote server returned an error: (404) Not Found."
Run Code Online (Sandbox Code Playgroud)

my-container 在门户上创建并被定义为“公共 Blob”。

任何想法可能是什么问题?

Ale*_*x S 5

这是由于容器不存在而导致的。请参阅此 SO 问题以及在连接到 azure 存储帐户时出现 404 错误

您可以通过container.CreateIfNotExists()在上传 Blob 之前调用来确保容器存在。就我个人而言,我将此作为某些应用程序启动代码的一部分运行,而不是在每个 blob 上传时运行。

本文有背景 https://azure.microsoft.com/en-gb/documentation/articles/storage-monitoring-diagnosing-troubleshooting/#the-client-is-receiving-404-messages

在客户端尝试插入对象的情况下,鉴于客户端正在创建新对象,可能不会立即明白为什么这会导致 HTTP 404(未找到)响应。但是,如果客户端正在创建一个 blob,它必须能够找到 blob 容器,如果客户端正在创建一条消息,它必须能够找到一个队列,如果客户端正在添加一行,它必须能够找到桌子。