2015-07-22 2 views
3

Я бегаю по кругу, пытаясь выработать код для загрузки файла из частного контейнера Azure Storage в MemoryStream.Azure Storage private container blob to MemoryStream

меня это до сих пор ...

StorageCredentials storageCredentials = new StorageCredentials(*my StorageAccountName*, *my StorageAccountAccessKey*); 
CloudStorageAccount storageAccount = new CloudStorageAccount(storageCredentials, true); 

Uri blobUri = new Uri(featureFile.URL); 
CloudBlockBlob blob = new CloudBlockBlob(blobUri); 

MemoryStream mem = new MemoryStream(); 
blob.DownloadToStream(mem); 

Она ошибки на последней строке с ...

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

Однако, он будет работать без ошибок, когда контейнер не является частным.

Любая помощь очень ценится, спасибо.

ответ

7

Пожалуйста, попробуйте следующий код:

StorageCredentials storageCredentials = new StorageCredentials(*my StorageAccountName*, *my StorageAccountAccessKey*); 
CloudStorageAccount storageAccount = new CloudStorageAccount(storageCredentials, true); 

Uri blobUri = new Uri(featureFile.URL); 
CloudBlockBlob blob = new CloudBlockBlob(blobUri, storageCredentials);//added storageCredentials 

MemoryStream mem = new MemoryStream(); 
blob.DownloadToStream(mem); 

Поскольку контейнер имеет Private ACL, запрос должен пройти проверку подлинности. Использование this конструктора CloudBlockBlob позаботится об этом.

+0

Отлично, спасибо. Я просто пропустил этот дополнительный параметр. Теперь он работает без ошибок. – spaceduk

Смежные вопросы