当函数 returns 文件时无法加载 API 定义

Failed to load API definition when a function returns a file

我的 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 将再次运行。

您需要添加路由,修改如下代码;

[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");
}