首页 文章

Swashbuckle / Swagger ASP.Net核心:“无法加载API定义”

提问于
浏览
13

我开发了一个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表现得这样?

我可以使用任何配置吗?

6 回答

  • 4

    我正在删除一个未被使用的类的 TypeLoadException . 在我的情况下修复是删除bin / obj / Debug文件夹内容 . 清洁解决方案重建解决方案没有为我解决 .

  • 0

    我也得到了这个错误,因为我创建了一个控制器,它有 [Route("api/[controller]")] . 放完后,错误就消失了 .

  • 4

    如果公共方法不是控制器中的操作,则Swagger也会抛出相同的异常 . 解决方法是将所有这些都设为私有 .

  • 0

    我不知道这是否已经解决,但你可以通过以下方式解决方法:

    [ApiExplorerSettings(IgnoreApi = true)]
    

    这将确保Swagger忽略有问题的方法 .

  • 0

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

  • 9

    选项ResolveConflictingActions应该适用于这种情况......

    这是实际的错误:

    System.NotSupportedException: Ambiguous HTTP method for action
    

    那是来自:https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/src/Swashbuckle.AspNetCore.SwaggerGen/Generator/SwaggerGenerator.cs#L90

    我认为这是一个错误,如果你真的感兴趣,你应该向项目报告

相关问题