我陷入了这个错误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)
{
return cloudBlobClientReferenceName.GetBlockBlobReference(blobContentName);
}
and my StorageConnectionString
is
<Setting name="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=duw;AccountKey=bla bla" />
容器“upload”和存储帐户“duw”存在。
执行blob.UploadFromStream(file.InputStream);
语句导致错误。
堆栈跟踪 :
在 Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
在 Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait()
在 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 行
内部异常:
{"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;
}
现在是更长的版本:)
您收到此错误的原因是您构建的方式CloudBlockBlob
对象在BlobPropertySetting
方法。当您使用代码时,它会创建一个具有以下 URI 的 blob 对象:https://duv.blob.core.windows.net/blobContentName
。如果您注意到,那里没有容器名称。由于没有容器名称,存储客户端库假设您正在尝试在以下位置创建 blob$root
Blob 容器是一种特殊的 Blob 容器。你可以在这里读更多关于它的内容:http://msdn.microsoft.com/en-us/library/windowsazure/hh488356.aspx http://msdn.microsoft.com/en-us/library/windowsazure/hh488356.aspx。由于您的存储帐户没有此容器,因此您会得到404 - Resource Not Found
error.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)