【发布时间】:2021-05-31 09:10:31
【问题描述】:
【问题讨论】:
标签: asp.net-core .net-core swagger asp.net-core-webapi swagger-ui
【问题讨论】:
标签: asp.net-core .net-core swagger asp.net-core-webapi swagger-ui
您应该在swagger 之前添加符号/:
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "IRIEO.API");
});
【讨论】:
output 面板进行故障排除。
dotnet new webapi,添加到该项目 swagger UI 并逐步将您的逻辑移动到该新项目中,控制 swagger UI 工作的每个步骤。
output 面板。该面板将显示详细的错误消息。
当您的控制器出现问题时,通常会显示该错误,请检查控制器的代码,在我的情况下,我忘记将 [HttpDelete("{id}")] 放入方法中,这就是我给出该错误的原因。在调试控制台中它应该会向您显示错误,只需查找它,因为它是相当多的文本。
【讨论】:
如果有 HttpPost,那么您需要确保为它命名。
[HttpPost(nameof(UpdateContactDetails))]
不只是
[HttpPost]
【讨论】:
按照 Carlos Javier Bazan 的建议查看输出控制台。 在我的情况下,这是控制器中的错误:Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException:不明确的 HTTP 操作方法 - WebsiteR3.Controllers.WHhandlerController.UpdPaymentStatus
【讨论】:
当有多个端点具有相同的路由 URL 时,Swagger 可能会引发此错误。只需尝试解析所有控制器中的操作路由 URL,并使每个 URL 唯一。
【讨论】:
请检查以上所有内容,因为它可能是其中任何一个。
但请务必检查该路线是否独一无二。就我而言
[Route("api")]
[ApiController]
public class MyApiForFooAbcCalcController : ControllerBase
{
// ...
}
路由“api”已在项目的第二个控制器类中定义,导致冲突。尽管两个类中的方法都有不同的名称(以及 HttpGet、HttpPost 等的属性),但冲突仍然存在并导致了运行时错误。请注意,它编译时没有任何错误。
要解决,请为每个类添加更具体的路由,例如:
[Route("api/forFooAbcCalc")]
另一个类似
[Route("api/forFooXYZCalc")]
然后它将再次编译并运行!
【讨论】: