2017-02-10 4 views
0

Разработка API с помощью ASP.NETHttpResponseMessage Перенаправление Private Azure Blob Storage

Можно ли перенаправить пользователя на частную лазурного хранения больших двоичных объектов? Могу ли я сделать это с помощью SAS-ключей или SDK лазурного пятна?

Например, я хочу сделать что-то вроде этого:

var response = Request.CreateResponse(HttpStatusCode.Moved); 
response.Headers.Location = new Uri(bloburl); 
return response; 

Можно ли доступ к закрытому блоб, положив ключ в URL? Очевидно, я не хочу класть мастер-ключ.

ответ

1

Можно ли перенаправить пользователя на частное хранилище azure blob? Может Я делаю это с помощью ключей SAS или SDK лазурного пятна?

Да, вполне возможно перенаправить пользователя в частный блок. Вам нужно будет создать Shared Access Signature (SAS) с разрешением не менее Read и добавить этот токен SAS к URL-адресу blob и перенаправить на этот URL-адрес.

Ваш код будет выглядеть примерно так:

 var cred = new StorageCredentials(accountName, accountKey); 
     var account = new CloudStorageAccount(cred, true); 
     var client = account.CreateCloudBlobClient(); 
     var container = client.GetContainerReference("container-name"); 
     var blob = container.GetBlockBlobReference("blob-name"); 
     var sasToken = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy() 
     { 
      Permissions = SharedAccessBlobPermissions.Read, 
      SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1)//Assuming you want the link to expire after 1 hour 
     }); 
     var blobUrl = string.Format("{0}{1}", blob.Uri.AbsoluteUri, sasToken); 
     var response = Request.CreateResponse(HttpStatusCode.Moved); 
     response.Headers.Location = new Uri(bloburl); 
     return response; 
+0

Это большое спасибо, только то, что мне нужно. Я не знал, что могу добавить ключ SAS в URL-адрес blob и ссылаться на него таким образом. Я буду отчитываться после попытки реализовать. – Jaked222

+0

Быстрый вопрос: есть ли недостаток в создании нового ключа SAS для каждого запроса блога по производительности? Кроме того, поскольку приложение использует этот API только для загрузки одного изображения через ссылку blob, я предполагаю, что было бы хорошо, чтобы каждая ссылка истекала через 1 минуту? Я полагаю, что даже второй последовательный запрос на тот же самый blob создаст новый ключ SAS. – Jaked222

+0

'Есть ли недостаток в создании нового ключа SAS для каждого запроса блоб-производительности? '- Не то, что я могу придумать. Создание ключа SAS не делает никаких сетевых вызовов, поэтому нет накладных расходов на сеть или IO. –

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