函数返回文件时加载 API 定义失败
Posted
技术标签:
【中文标题】函数返回文件时加载 API 定义失败【英文标题】:Failed to load API definition when a function returns a file 【发布时间】:2021-08-28 07:48:42 【问题描述】:我的 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 将再次工作。
【问题讨论】:
Swagger 不理解 IActionResult。 ***.com/a/53107899/14072498 【参考方案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");
【讨论】:
以上是关于函数返回文件时加载 API 定义失败的主要内容,如果未能解决你的问题,请参考以下文章
单击时的DataTable锚事件不起作用,并返回加载资源失败