12

このエラーで立ち往生しています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;
    }

そして私のStorageConnectionString

      <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() at Microsoft.WindowsAzure.StorageClient.Tasks.Task1.ExecuteAndWait() Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImpl(Func`1 impl) Microsoft.WindowsAzure.StorageClient.CloudBlob.UploadFromStream(ストリーム ソース、BlobRequestOptions オプション) Microsoft D:\DU Server\trunk\Du Server\DAL\Handlers\BlobHandler.cs:line 151 の DAL.Handlers.BlobHandler.CreateAd(HttpPostedFileBase ファイル、広告モデル) の .WindowsAzure.StorageClient.CloudBlob.UploadFromStream(ストリーム ソース)

内部例外:

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

これを整理するのを手伝ってくれる人はいますか?

4

2 に答える 2

8

短縮版

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. 気がつけば、そこにはコンテナ名がありません。$rootコンテナー名がないため、ストレージ クライアント ライブラリは、特別な BLOB コンテナーである BLOB コンテナーにBLOB を作成しようとしていると想定します。詳細については、http: //msdn.microsoft.com/en-us/library/windowsazure/hh488356.aspxを参照してください。ストレージ アカウントにはこのコンテナーがないため、404 - Resource Not Foundエラーが発生します。

于 2013-09-18T05:44:06.463 に答える