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

时间:2015-09-18 08:43:37

标签: 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);
}

一切正常,直到UploadFromStream抛出:

"The remote server returned an error: (404) Not Found."

my-container已在Portal上创建,并被定义为“Public Blob”。

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

1 个答案:

答案 0 :(得分:3)

如果容器不存在,则会导致此问题 请参阅此SO问题getting 404 error when connecting to azure storage account

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

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

  

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