Swashbuckle / Swagger + ASP.Net Core: "не удалось загрузить определение API"
Я разрабатываю ASP.NET применение сердечника 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 должен быть в состоянии справиться с этим правильно.
почему Свэггер ведет себя так?
есть ли настройки я могу использовать?
3 ответов
параметр ResolveConflictingActions должен работать над этим делом...
вот фактическая ошибка:
System.NotSupportedException: Ambiguous HTTP method for action
это исходит от: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/src/Swashbuckle.AspNetCore.SwaggerGen/Generator/SwaggerGenerator.cs#L90
Я думаю, это ошибка, если вы действительно заинтересованы, вы должны сообщить об этом в проекте
Я не знаю, было ли это решено или нет, но один из способов, которым вы можете это сделать, - это украсить метод:
[ApiExplorerSettings(IgnoreApi = true)]
Это гарантирует, что рассматриваемый метод игнорируется Swagger.
Добавить Httpxxx([HttpGet]
, [HttpPost]
, ...) атрибут для каждого метода действия или [ApiExplorerSettings(IgnoreApi = true)]