2017-08-21 10 views
0

おはよう、私は彼らの提供するサンプルコードを使用して、初めてAzureのブログストレージを実装しようとしているAzureブロブストレージ400不正な要求

。しかし、私のアプリはUploadFromStream()にしようとすると、非常に広範な400 Bad Requestエラーが発生します。

私はこの問題を検索しました。私が遭遇したほとんどのものは、コンテナまたはブロブの命名規則が問題になることを示しています。これは私が

私のコードは、そのサンプルコードと違いはありませんなど、すべて小文字を使用しています、私の問題ではありません:

接続文字列:

<add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=xxxxxx;EndpointSuffix=core.windows.net" /> 

とコード:

ここで
// Retrieve storage account from connection string 
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 

// Create the blob client 
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

// Retrieve reference to a previously created container 
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer"); 

// Retrieve reference to a blob named "myblob" 
CloudBlockBlob blob = container.GetBlockBlobReference("myblob"); 

// Create the container if it doesn't already exist 
container.CreateIfNotExists(); 

// Create or overwrite the "myblob" blob with contents from a local file. 
using (var fileStream = System.IO.File.OpenRead(@"D:\Files\logo.png")) 
{ 
    blob.UploadFromStream(fileStream); 
} 

は、例外の詳細です: enter image description here

これは私が続けなければならないことです。私が考えることができる唯一の他の事は、私が開発環境でHTTPSではなくHTTPを実行していることです。これが問題になるかどうかはわかりませんか?

EDIT:さらに 、私はTestAzureFileUpload.txtため

検証エラーを受け取るコンテナにAzureのポータルでdirectilyファイルをアップロードしようとします。詳細:「ページブロブ のサイズは、512バイトの境界に揃えられている必要があります。現在のファイルサイズは 56です。

これは私の問題と関連がありますか?私はここにいくつかの設定がないのですか?

私は誰でも私が正確な問題を特定するのを助けるのに十分ではないと知っていますが、私は誰かがこれを解決するために少なくとも正しい方向に私を向けることを望んでいますか?

すべてのヘルプは、私はコードをテストし、あなたと同じ「400不正な要求」を取得するにはプレミアムストレージアカウントを使用し

+0

、これは私の問題ではありません。私のコードを見ると、私のコンテナ名とBLOB名はすべて小文字であることがわかります。返信のためのThx – Nugs

+0

それ以上の光沢のある、申し訳ありません。 – maccettura

+0

例外を受け取ったら、 'RequestInformation'ノードを展開してそこに表示されているものすべてを含めることができます。通常、エラーの詳細が表示されます。あなたの2回の試みから野生の推測を見て、問題のストレージアカウントの冗長性レベルが 'Premium_LRS'であると仮定しています。それを確認していただけますか?そうであれば、 'Premium_LRS'ストレージアカウントはページブロブだけをサポートしており、そこにブロックブロブをアップロードしようとしているため、このエラーが発生します。 –

答えて

1

をいただければ幸いです。 例外の詳細から、「ブロブがサポートされていません」というメッセージが表示されます。

Here is an image of my exception details

あなたの問題を解決するために、私はあなたがブロックブロブとページブロブの違いを知っておくべきだと思います。

ブロックブロブはブロックで構成され、ブロックのそれぞれはブロックIDで識別されます。ブロック・ブロブを作成または変更するには、ブロック・セットを書き込み、ブロックIDでコミットします。それらは、jpg、txt、ログなどのディスクリートストレージオブジェクトです。通常、ローカルOSのファイルとして表示されます。 標準ストレージアカウントでのみサポートされています。ランダム読み取り用に最適化された512バイトのページの集合であり、そのようVHDのなどの操作を、書き込み

ページの塊。ページ・ブロブを作成するには、ページ・ブロブを初期化し、ページ・ブロブが大きくなる最大サイズを指定します。実際のところ、ページブロブはAzure仮想マシンディスク用に設計されています。 標準およびプレミアムストレージアカウントの両方でサポートされています。

現在、プレミアムストレージ()は、Azure Virtual Machinesで使用されているディスクにデータを保存するためにのみ使用できます。

だから私の提案は次のとおりです。

、あなたのアプリケーションは、ストリーミングとランダムアクセスのシナリオをサポートし、どこからでもアプリケーションデータにアクセスできるようにしたい場合。標準のアカウントでブロックブロブを使用する必要があります。

ネイティブファイルシステムAPIを使用するアプリケーションを持ち上げて移動し、永続ディスクにデータを読み書きする場合は、または、ディスクが接続されている仮想マシンの外部からアクセスする必要のないデータを格納する場合。ページブロブを使用する必要があります。

参考リンク:私が述べたように

Understanding Block Blobs, Append Blobs, and Page Blobs

+0

(私の評判が2つのリンクを投稿するのに十分でないため) [Azure Blobs、Azureファイル、またはAzureデータディスクを使用するタイミングの決定](https://docs.microsoft.com/ en-us/azure/storage/common/storage-determined-blobs-files-disks) – Hayley244

+0

これはまさに私の問題でした!ありがとう!アカウントをアップグレードして問題を修正しました。 – Nugs

関連する問題