упаковка при использовании оператора вызывает ошибку на контроллере api - PullRequest
1 голос
/ 19 июня 2020

У меня есть следующие строки кода на моем контроллере API, который вернет файл. Этот код строк кода работает нормально, но я хотел обернуть их в оператор using, чтобы избежать утечек памяти. Но если я это сделаю, конечная точка не возвращает файл, и я получаю исключение «Необработанное исключение было создано приложением. System.ObjectDisposedException: невозможно получить доступ к закрытому потоку».

                Stream memory = await _mySrv.GetDocMemoryStream(data);  
                var contentType = filename.GetContentType();
                return File(memory, contentType, "myfile.pdf");

Безопасно ли оставлять такой код, по крайней мере, на контроллере API? Будет ли он обрабатываться. NET core framework?

1 Ответ

0 голосов
/ 23 июня 2020

Если вы определяете свой Stream как MemoryStream, вы можете затем использовать ToArray(), чтобы поместить содержимое потока в результат File.

Я использую аналогичный код в одном из своих приложений.

using (MemoryStream memory = await _mySrv.GetDocMemoryStream(data))
{ 
    var contentType = filename.GetContentType();
    
    return File(memory.ToArray(), contentType, "myfile.pdf");
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...