我正在尝试将图像从服务器上传到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);
}
一切正常,直到UploadFromStream
抛出:
"The remote server returned an error: (404) Not Found."
my-container
已在Portal上创建,并被定义为“Public Blob”。
任何想法可能是什么问题?
答案 0 :(得分:3)
如果容器不存在,则会导致此问题 请参阅此SO问题getting 404 error when connecting to azure storage account
您可以在上传blob之前调用container.CreateIfNotExists()
来确保容器存在。
我个人将其作为一些应用程序启动代码的一部分运行,而不是每次blob上传。
在客户端尝试插入对象的场景中 可能不会立即明显为什么会导致HTTP 404(不是 鉴于客户端正在创建一个新对象。 但是,如果客户端正在创建一个blob,它必须能够找到 blob容器,如果客户端正在创建它必须能够的消息 找到一个队列,如果客户端正在添加一行,它必须能够 找到桌子。