1. 因Controllers中一个方法缺少 [HttpMethod]特性,导至Swagger报错,报错信息如下:
Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException: Ambiguous HTTP method for action - XXXX.GetXXXXController.幽幽x. Actions require an explicit HttpMethod binding for Swagger/OpenAPI 3.0
解决办法:
检查所有Action,确保所有Action上面都有正确的[HttpMethod]特性。
或者在AddSwagger的时候设置一下,让Swagger忽略没有[HttpMethod]特性的Action,方法是在在Program.cs文件中把 builder.Services.AddSwaggerGen() 这行代码替换成
builder.Services.AddSwaggerGen(options =>
{
options.DocInclusionPredicate((name, api) => api.HttpMethod != null);
});
2. 允许一个ApiController中出现多个请求方法相同的Action
只需把该ApiController中 路由规则 [Route("api/[controller]")] 替换成 [Route("api/[controller]/[action]")] 即可。
