我开发了一个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 回答
我正在删除一个未被使用的类的
TypeLoadException
. 在我的情况下修复是删除bin / obj / Debug文件夹内容 . 清洁解决方案重建解决方案没有为我解决 .我也得到了这个错误,因为我创建了一个控制器,它有
[Route("api/[controller]")]
. 放完后,错误就消失了 .如果公共方法不是控制器中的操作,则Swagger也会抛出相同的异常 . 解决方法是将所有这些都设为私有 .
我不知道这是否已经解决,但你可以通过以下方式解决方法:
这将确保Swagger忽略有问题的方法 .
为每个Action方法添加Httpxxx(
[HttpGet]
,[HttpPost]
,...)属性,或[ApiExplorerSettings(IgnoreApi = true)]
选项ResolveConflictingActions应该适用于这种情况......
这是实际的错误:
那是来自:https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/src/Swashbuckle.AspNetCore.SwaggerGen/Generator/SwaggerGenerator.cs#L90
我认为这是一个错误,如果你真的感兴趣,你应该向项目报告