Asp.net 正在尝试将图像上载到Azure,但获取404

Asp.net 正在尝试将图像上载到Azure,但获取404,asp.net,azure,Asp.net,Azure,我正在尝试将图像从服务器上载到Azure: CloudStorageAccount storageAccount = CloudStorageAccount.Parse(GLOBAL_AZURE.AZURE_STORAGE_CONNECTION_STRING); CloudBlobContainer container = storageAccount.CreateCloudBlobClient().GetContainerReference("my-container"); CloudBlo

我正在尝试将图像从服务器上载到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
是在门户上创建的,并定义为“Public Blob”


知道问题出在哪里吗?

这是由于容器不存在造成的 看到这个问题了吗

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

本文有其背景

在客户端尝试插入对象的场景中,它 可能不太清楚为什么会产生HTTP 404(不是 如果客户端正在创建新对象,则响应。 但是,如果客户机正在创建blob,它必须能够找到 blob容器,如果客户端正在创建消息,则必须能够 查找队列,如果客户端正在添加行,则必须能够 找到桌子


你看到了吗。可能值得验证容器是否如您所期望的那样存在。@AlexS容器确实存在,并且由代码找到(container参数显示有关容器的各种信息,一切看起来都很好)。非常感谢。还有其他想法吗?如果存储中不存在容器,代码中的引用
容器
仍将包含有效属性。请告诉我,添加行
container.CreateIfNotExists()
,然后再试一次。在那之后,我就没什么想法了,因为我自己也在使用你的代码。另外,您的代码应该是
CloudBlobContainer container=storageAccount.CreateCloudBlobClient().GetContainerReference(“我的容器”)我认为这是你问题中的一个输入错误,否则就不会了compile@AlexS我听从了你的建议,一如既往,最顽固的虫子是最愚蠢的虫子。事实上,它是一个包含容器名称的常量的输入错误,因此是404。老兄,很抱歉用这件蠢事打扰你。非常感谢你的帮助!没问题,我们都去过!很高兴你的问题解决了。当容器感觉应该抛出错误时(比如文件未找到异常),它是一个填充的对象,这让人感到困惑。