Я загрузил несколько изображений в контейнер BLOB-объектов в учетной записи хранения Azure типа StorageV2 (общего назначения, версия 2).
Они были загружены программно. Вот код, который я использовал:
public Task CopyFile(string fileName, string targetPath)
{
var blobRef = Container.GetBlockBlobReference(targetPath);
blobRef.Properties.ContentType = GetContentType(fileName);
return blobRef.UploadFromFileAsync(fileName);
}
public string GetContentType(string fileName)
{
var provider = new FileExtensionContentTypeProvider();
if (!provider.TryGetContentType(fileName, out var contentType))
{
contentType = "application/octet-stream";
}
return contentType;
}
Container
является инициализированным экземпляром CloudBlobContainer
.
Когда я использую Storage Explorer, я вижу загруженные файлы. Если я просматриваю свойства любого файла, он перечисляет свойство Uri. Однако, если я скопирую значение (URL) и вставлю в браузер, я увижу следующую страницу с ошибкой:
<Error>
<Code>ResourceNotFound</Code>
<Message>
The specified resource does not exist. RequestId:12485818-601e-0017-6f69-56c3df000000 Time:2019-08-19T08:35:13.2123849Z
</Message>
</Error>
Но если я дважды щелкну файл в Storage Explorer, он загрузит изображение правильно. Насколько я могу судить, используемый им URL-адрес совпадает с тем, который я скопировал ранее, за исключением некоторых дополнительных строк запросов, которые выглядят следующим образом: ?sv=2018-03-28&ss=bqtf&srt=sco&sp=rwdlacup&se=2019-08-19T16:49:38Z&sig=%2FJs7VnGKsjplalKXCcl0XosgUkPWJccg0qdvCSZlDSs%3D&_=1566204636804
Я предполагаю, что это должно означать, что мои BLOB-объекты не являются общедоступными, но я не могу найти настройки, которые сделают мои изображения доступными публично по их известному URI. Кто-нибудь может указать мне правильное направление здесь? Спасибо.
2 ответа
Проверьте уровень доступа, установленный для вашего контейнера. Если это Private , то у вас будет ошибка, с которой вы столкнулись: ResourceNotFound
Насколько я знаю, если уровень доступа вашего контейнера - Private, вы используете прямой URL для доступа к BLOB-объекту, тогда вы получите ошибку. Если вы хотите получить к нему доступ, вам необходимо сгенерировать для него токен SAS.
Для получения более подробной информации, пожалуйста, обратитесь к
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-manage-access-to-resources https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
Похожие вопросы
Новые вопросы
azure
Microsoft Azure - это платформа для облачных вычислений «Платформа как услуга» и «Инфраструктура как услуга». Используйте этот тег для вопросов по программированию, касающихся Azure. Общая справка по серверу может быть получена в разделе «Суперпользователь» или «Ошибка сервера».