Я работаю над Asp.Net Core 2 Web Api, и мне нужно создать конечную точку для загрузки файла. Этот файл не является общедоступным, поэтому я не могу использовать свойство MediaLink
объекта хранения Google. Я использую их C # библиотеку .
В фрагменте кода вы увидите ниже _storageClient
был создан так: _storageClient = StorageClient.Create(cred);
. Клиент работает, просто показывая, какой это класс.
[HttpGet("DownloadFile/{clientId}/{fileId}")]
public async Task<IActionResult> DownloadFile([FromRoute] long fileId, long clientId)
{
// here there are a bunch of logic and permissions. Not relevant to the quest
var stream = new MemoryStream();
try
{
stream.Position = 0;
var obj = _storageClient.GetObject("bucket name here", "file.png");
_storageClient.DownloadObject(obj, stream);
var response = File(stream, obj.ContentType, "file.png"); // FileStreamResult
return response;
}
catch (Exception ex)
{
throw;
}
}
Переменная obj
приходит нормально. со всеми свойствами, заполненными, как и ожидалось. stream
, кажется, заполнен правильно. у него есть длина и все, но он возвращает ошибку 500, которую я даже не могу поймать.
Я не вижу, что я делаю неправильно, возможно, как я использую поток памяти, но я не могу даже поймать ошибку.
Спасибо за любую помощь