Не удалось загрузить определение API, когда функция возвращает файл

У меня есть проект API с ASP.NET Core (.NET5). Все работает нормально, и на странице Swagger отображаются все API. Теперь в контроллере я хочу добавить функцию для экспорта файла Excel. Код в контроллере такой:

[HttpGet]
public IActionResult DownloadExcel()
{
    byte[] reportBytes;

    using (var package = _utils.CreateCommentPackage())
    {
        reportBytes = package.GetAsByteArray();
    }

    return File(reportBytes, XlsxContentType, 
        $"Comments-{DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)}.xlsx");
}

Довольно просто, но определение Swagger не создается. Когда я открываю страницу Swagger, я вижу, что

введите здесь описание изображения

Если я уберу эту функцию, Swagger снова заработает.


person Enrico    schedule 11.06.2021    source источник
comment
Swagger не понимает IActionResult. stackoverflow.com/a/53107899/14072498   -  person Roar S.    schedule 11.06.2021


Ответы (1)


Вам нужно добавить маршрут, изменить код следующим образом:

[HttpGet]
[Route("api/DownloadExcel")]
public IActionResult DownloadExcel()
{
    byte[] reportBytes;

    using (var package = _utils.CreateCommentPackage())
    {
        reportBytes = package.GetAsByteArray();
    }

    return File(reportBytes, XlsxContentType, 
        $"Comments-{DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)}.xlsx");
}
person Yinqiu    schedule 12.06.2021