Ani*_*ran 7 c# blob azure visual-studio-2010 azure-storage
我坚持这个错误 The specified container does not exist.
让我解释,
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;
}
Run Code Online (Sandbox Code Playgroud)
而我的StorageConnectionString
是
<Setting name="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=duw;AccountKey=bla bla" />
Run Code Online (Sandbox Code Playgroud)
容器'上传'和存储帐户'duw'存在.
执行blob.UploadFromStream(file.InputStream);
语句导致错误.
堆栈跟踪 :
在Microsoft.WindowsAzure.StorageClient.Tasks.Task
1.get_Result() at Microsoft.WindowsAzure.StorageClient.Tasks.Task
1.ExecuteAndWait()在Microsoft的Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImpl(Func`1 impl)在Microsoft.WindowsAzure.StorageClient.CloudBlob.UploadFromStream(流源,BlobRequestOptions选项)在Microsoft .Dind.Handlers.BlobHandler.CreateAd(HttpPostedFileBase文件,广告模型)在D:\ DU Server\trunk\Du Server\DAL\Handlers\BlobHandler.cs:第151行
内在异常:
{"The remote server returned an error: (404) Not Found."}
任何人都可以帮助我解决这个问题.
精简版
请尝试以下代码来实现BlobPropertySetting
功能:
public static CloudBlockBlob BlobPropertySetting(CloudBlobClient cloudBlobClientReferenceName, string blobContentName)
{
CloudBlockBlob blob = cloudBlobClientReferenceName.GetBlockBlobReference("upload/" + blobContentName);
return blob;
}
Run Code Online (Sandbox Code Playgroud)
现在为更长的版本:)
您收到此错误的原因是您CloudBlockBlob
在BlobPropertySetting
方法中构造对象的方式.当您使用代码时,它会使用以下URI创建一个blob对象:https://duv.blob.core.windows.net/blobContentName
.如果你注意到,那里没有容器名称.由于没有容器名称,因此存储客户端库假定您尝试在$root
blob容器中创建blob,这是一个特殊的blob容器.你可以在这里阅读更多相关信息:http://msdn.microsoft.com/en-us/library/windowsazure/hh488356.aspx.由于您的存储帐户没有此容器,因此会404 - Resource Not Found
出错.
归档时间: |
|
查看次数: |
10019 次 |
最近记录: |