Я пытаюсь загрузить текстовый файл из потока в AzureBlobStorage в .Net Core, но кажется, что он молча терпит неудачу. Я читаю данные из базы данных и записываю их в MemoryStream
, используя StreamWriter
. На момент загрузки в BlobStorage Stream
имеет длину 7147, поэтому я знаю, что в нем есть данные.
Вот мой код для загрузки файла:
public static async void UploadFromStream(string fileName, Stream stream, string fileExtenstion = "txt")
{
var storageAccount = CloudStorageAccount.Parse(_connectionString);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("logs");
// By this point, I have a reference to my `logs` container which exists
var blockBlob = container.GetBlockBlobReference($"{fileName}.{fileExtenstion}");
try
{
stream.Position = 0;
await blockBlob.UploadFromStreamAsync(stream);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
Вызывается:
var memoryStream = new MemoryStream();
using (var writer = new StreamWriter(memoryStream))
{
while (reader.Read())
{
writer.WriteLine(
$"[{reader["Timestamp"]}][{reader["Level"].ToString().ToUpper()}] :: {reader["Message"]}{(!string.IsNullOrWhiteSpace(reader["Exception"].ToString()) ? " -- " + reader["Exception"] : "")}");
}
Task.Run(() => StorageService.UploadFromStream($"logfile_{DateTime.Today:s}", memoryStream)).Wait();
}
Я не попадаю внутрь своего блока Catch, поэтому я не думаю, что нажимаю какие-либо исключения, но когда я проверяю свое хранилище, там ничего нет. Приложение запускается без ошибок.
Я даже пытался использовать byte[] bytes = stream.ToArray()
и blockBlob.UploadFromByteArrayAsync
, но все еще безрезультатно.