2017-07-10 5 views
0

存在しないが、私のコードです:Azureブロブストレージアップロードファインが、ブロブはここ

using Microsoft.WindowsAzure.Storage; 
using Microsoft.WindowsAzure.Storage.Blob; 
using System; 
using Microsoft.WindowsAzure; 
using System.Net.Http; 

namespace Test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //get the storage account from the connection string 
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=[account name];AccountKey=[account key];EndpointSuffix=core.windows.net"); 

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

      //set the container 
      CloudBlobContainer container = blobClient.GetContainerReference("images"); 

      //get the blob reference 
      CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob.jpg"); 

      //get image from stream and upload 
      using (var client = new HttpClient()) 
      { 
       using (var stream = client.GetStreamAsync(some_url).GetAwaiter().GetResult()) 
       { 
        if (stream != null) 
        { 
         blockBlob.UploadFromStreamAsync(stream); 
        } 
       } 
       client.Dispose(); 
      } 
     } 
    } 
} 

ストレージアカウントのインスタンスが正常に動作します。 コンテナ参照は正常に動作します(実際に存在します)。 ブロック・ブロブ参照は、エラーなく動作します。 ストリームには、参照しているURLから取得した画像があります。 最後に、アップロードでエラーが返されません。

ただし、Blob URIに移動すると画像が表示されません。

私は次のエラーを取得する:

指定されたブロブが存在しません。 RequestId:7df0aadc-0001-007c-6b90-f95158000000時間:2017-07-10T15:21:25.2984015Z

私はAzure Portal経由で画像をアップロードしており、存在し、ブラウザ経由でナビゲートできます。

何か不足していますか?

+0

アップロードする直前にストリームの位置を0に設定してみてください。 –

+0

コンテナは公開されているかプライベートですか? –

+0

'async'メソッドを' GetAwaiter()。GetResult() 'と呼んでいます。これは**非常に**悪い習慣です。 – VMAtm

答えて

1

asyncメソッドを呼び出しているときにコードの下の行を更新してください。

blockBlob.UploadFromStreamAsync(stream).GetAwaiter().GetResult(); 

これで問題が解決するはずです。

+0

ありがとうございます。出来た。 – crackedcornjimmy

+0

これは 'async'メソッドの結果を待つのは非常に**悪い習慣です。 – VMAtm

関連する問題