首页 > 解决方案 > Swashbuckle/Swagger + ASP.Net Core:“加载 API 定义失败”

问题描述

我开发了一个 ASP.NET Core 2 应用程序并包含了 Swagger。一切正常,直到我引入了一个没有明确定义 HTTP 操作的方法:

public class ErrorController : Controller
{
    [Route("/error")]
    public IActionResult Index()
    {
        return StatusCode(500, new Error("Internal error."));
    }
}

当我使用此方法启动应用程序时,出现以下消息:

未能加载 API 定义。

错误
获取错误内部服务器错误/swagger/v1/swagger.json

一旦我明确设置例如[HttpGet]错误消失。问题是,我需要这个方法来触发所有可能的 HTTP 操作。当然,我可以明确指定所有操作,但我觉得 Swagger 应该能够正确处理这个问题。

为什么 Swagger 会这样?

有什么我可以使用的配置吗?

标签: c#asp.net-coreswaggerswashbuckle

解决方案


为每个 Action 方法添加 Httpxxx( [HttpGet], [HttpPost], ...) 属性,或者[ApiExplorerSettings(IgnoreApi = true)]


推荐阅读