Я загружаю файлы из Azure blob, чтобы отобразить их для моих пользователей. Файлы только возобновляются в формате doc/docx/pdf. Это работало до нескольких дней назад, и только я сделал обновление Azure SDK, так что это может быть причиной. метод вызывается на стороне клиента, который заканчивается вызовом метода, как это:Azure Blob download (GET) вызывает неудачный запрос PUT
CloudBlobContainer container = GetContainer(containerName);
CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
blockBlob.Properties.ContentType = contentType;
using (var fileStream = new MemoryStream())
{
await blockBlob.DownloadToStreamAsync(fileStream);
return fileStream;
}
метод GetContainer определяется следующим образом:
try
{
var storageAccount = StorageAccount;
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
if (container.CreateIfNotExists())
{
container.SetPermissions(new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
}
return container;
}
catch (Exception e)
{
Logger.Error("GetBlobContainer fail", e);
}
По состоянию на вчера, я продолжаю видеть в Azure Application Insights неудачные вызовы зависимостей. Не ошибки, а просто неудачные зависимости. Каждый раз, когда файл загружается, выполняется запрос GET, но в то же время PUT-запрос также выполняется по какой-либо причине, и он терпит неудачу. На изображении ниже вы можете увидеть журнал Insights для этой ошибки. Каждый выглядит одинаково. Вызывается метод, файл загружен, а затем этот запрос PUT называют ...
Почему этот запрос PUT создается, и как решить эту проблему, это сводит меня с ума. Интересно также, что все работает отлично, насколько я вижу, и это происходит во всех моих загружаемых и загружаемых звонках на blobs.
Почему вы возвращаете утилиту 'fileStream'? Разве это не вызовет проблемы? Что вы делаете с этим значением? –
Я возвращаю его и считываю массив байтов из него с помощью метода ToArray(). Байт-массив по-прежнему доступен после закрытия/удаления потока (http://stackoverflow.com/questions/3981253/is-calling-memorystream-toarray-dangerous-after-disposing) –