dotnet core配置swagger文档报错
在给一个新的dotnet core项目配置swagger文档的时候,编译没问题访问接口文档 /swagger 出现错误 Failed to load API definition.使用的是Swashbuckle.AspNetCore包。以前一直没出现过这个错误。好在F12查看到swagger的结果报500错误了,才找到原因。
访问/swagger/v1/swagger.json 报错信息如下
System.NotSupportedException: Ambiguous HTTP method for action - DEMO.Controllers.HomeController.Index (TianGui.Web.WebApi). Actions require an explicit HttpMethod binding for Swagger/OpenAPI 3.0
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperations(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GeneratePaths(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwagger(String documentName, String host, String basePath)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
HEADERS
=======
Accept: application/json,*/*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Cookie: JSESSIONID=6a8d2980-37a5-459d-ad2c-d804425e567d; ASP.NET_SessionId=x11uh1hk1z3yy3erjji12i0i
Host: localhost:52764
Pragma: no-cache
Referer: http://localhost:52764/swagger/index.html
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
DNT: 1
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
看报错得知 action HomeController.Index 未明确标记 HttpMethod,这个action可以访问是因为全局路由所以可以访问。看到这个报错直接在报错对应的action上增加HttpMethod即可。
[ApiController]
[Route("/")]
public class HomeController : Controller
{
[HttpGet]
public ResponseVm Index()
{
return ResponseVm.Success();
}
}
正文到此结束
热门推荐
相关文章
该篇文章的评论功能已被站长关闭