C# 指定的容器不存在
我被此错误所困扰C# 指定的容器不存在,c#,visual-studio-2010,azure,blob,azure-storage,C#,Visual Studio 2010,Azure,Blob,Azure Storage,我被此错误所困扰指定的容器不存在。 让我解释一下 CloudBlobClient blobStorage = GetBlobStorage("upload"); CloudBlockBlob blob = BlobPropertySetting(blobStorage, Guid.NewGuid().ToString().ToLower() + Path.GetExtension(file.FileName)); blob.UploadFromStream(file.InputStream);
指定的容器不存在。
让我解释一下
CloudBlobClient blobStorage = GetBlobStorage("upload");
CloudBlockBlob blob = BlobPropertySetting(blobStorage, Guid.NewGuid().ToString().ToLower() + Path.GetExtension(file.FileName));
blob.UploadFromStream(file.InputStream);
public static CloudBlobClient GetBlobStorage(string cloudBlobContainserName)
{
CloudBlobClient blobStorage;
try
{
var storageAccount = CloudStorageAccount.FromConfigurationSetting("StorageConnectionString");
blobStorage = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobStorage.GetContainerReference(cloudBlobContainserName);
container.CreateIfNotExist();
var permissions = container.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
container.SetPermissions(permissions);
}
catch (Exception ex)
{
Logger.LogError(Log4NetLogger.Category.Exception, "Error in : BlobHandler.GetBlobStorage :>> Exception message: " + ex.Message);
throw;
}
return blobStorage;
}
public static CloudBlockBlob BlobPropertySetting(CloudBlobClient cloudBlobClientReferenceName, string blobContentName)
{
CloudBlockBlob blob = cloudBlobClientReferenceName.GetBlockBlobReference(blobContentName);
return blob;
}
我的StorageConnectionString
是
<Setting name="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=duw;AccountKey=bla bla" />
容器“上载”和存储帐户“duw”存在
执行blob.UploadFromStream(file.InputStream)代码>语句导致错误
堆栈跟踪:
在Microsoft.WindowsAzure.StorageClient.Tasks.Task1.get_Result()上
在Microsoft.WindowsAzure.StorageClient.Tasks.Task上执行
位于Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImpl(Func`1 impl)
位于Microsoft.WindowsAzure.StorageClient.CloudBlob.UploadFromStream(流源,BlobRequestOptions选项)
位于Microsoft.WindowsAzure.StorageClient.CloudBlob.UploadFromStream(流源)
位于D:\DU Server\trunk\DU Server\DAL\Handlers\BlobHandler.cs中的DAL.Handlers.BlobHandler.CreateAd(HttpPostedFileBase文件,广告模型):第151行
内部异常:
{“远程服务器返回错误:(404)未找到。”}
任何人都能帮我解决这个问题。简短版本
请为BlobPropertySetting
功能尝试以下代码:
public static CloudBlockBlob BlobPropertySetting(CloudBlobClient cloudBlobClientReferenceName, string blobContentName)
{
CloudBlockBlob blob = cloudBlobClientReferenceName.GetBlockBlobReference("upload/" + blobContentName);
return blob;
}
现在查看较长版本:)
出现此错误的原因是您在BlobPropertySetting
方法中构造CloudBlockBlob
对象的方式。使用代码时,它会创建一个具有以下URI的blob对象:https://duv.blob.core.windows.net/blobContentName
。如果您注意到,这里没有容器名称。由于没有容器名称,存储客户端库假定您正在尝试在$root
blob容器中创建一个blob,它是一个特殊的blob容器。您可以在此处阅读更多信息:。由于您的存储帐户没有此容器,因此您会收到404-未找到资源错误。我已经很晚了,但仍然认为我的答案是否对任何人都有用
我通过输入正确的“容器名称”解决了这个错误。默认情况下是不同的。
我克隆了这个GIT项目:
首先要做的是检查是否使用任何azure storage Viewer.like cloudstorageexplorer正确创建了容器。其次,查看是否在BlobPropertySetting方法中正确获取blob引用?blobStorage.GetContainerReference(“上载”)提供以下{Microsoft.WindowsAzure.StorageClient.CloudBlobContainer}属性:{Microsoft.WindowsAzure.StorageClient.BlobContainerAttributes}元数据:{System.Collections.Specialized.NameValueCollection}Name:“上载”属性:{Microsoft.WindowsAzure.StorageClient.BlobContainerProperties}ServiceClient:{Microsoft.WindowsAzure.StorageClient.CloudBlobClient}Uri:{}我不确定我是否理解前3行..它们是类级变量还是从另一个未显示的方法运行它们?@paqogomez:class-level-vars..我使用的所有方法都显示在这里..非常感谢您花费宝贵的时间..但是我对代码流CloudBlobContainer container=blobStorage.GetContainerReference感到困惑e(CloudBlobContainesName);container.CreateIfNotExist();这两行执行na..?是的,它们已执行。您应该看到名为“upload”的blob容器在您的存储帐户中。基本上,您在离开该方法时丢失了对容器的引用。另一种选择是从该方法返回CloudBlobContainer
类型的对象,而不是CloudBlobClient
。然后在BlobPropertySetting
中,当您传递此blob容器对象时,您可以不必在GetBlockBlobReference
.HTH中预先输入容器名称。我也犯了同样的错误,甚至忘记更改容器名称。现在我的服务正在启动,但当尝试上载文件时,它在upload.js文件中抛出500个错误。TypeError:无法读取未定义的属性“status”。不确定我的错误是什么我在这里做赌注。
const
express = require('express')
, router = express.Router()
, azureStorage = require('azure-storage')
, blobService = azureStorage.createBlobService()
, containerName = 'container' // added container name here, as my container name
, config = require('../config')
;