Я разрабатываю приложение 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 ведет себя таким образом?
Есть ли какая-либо конфигурация, которую я могу использовать?
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "My Service", Version = "v1" });
});
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((swagger, httpReq) => swagger.Host = httpReq.Host.Value);
});
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "swagger"; // serve the UI at root
c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs");
})
Подробнее здесь: https://stackoverflow.com/questions/502 ... definition