获取错误未定义的swagger/v1/swagger.json.Net核心3.1 API

xvw2m8pv  于 2022-11-06  发布在  .NET
关注(0)|答案(8)|浏览(229)

提取错误未定义的swagger/v1/swagger.json .Net Core 3.1 API

我已经尝试了几乎一切,有人能帮助我得到这个修复.
提前感谢!

svdrlsy4

svdrlsy41#

您应该在swagger之前添加符号/

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "IRIEO.API");
});
kmbjn2e3

kmbjn2e32#

当你的控制器有问题时,通常会显示错误,检查你的控制器的代码,在我的例子中,我忘记了把[HttpDelete(“{id}”)]放在一个方法中,这就是为什么我给出了错误。在调试控制台中,它应该会显示错误,只是寻找它,因为它是纯文本。

k4aesqcs

k4aesqcs3#

如果有HttpPost,那么您需要确保为其命名。

[HttpPost(nameof(UpdateContactDetails))]

而不仅仅是

[HttpPost]
avwztpqn

avwztpqn4#

按照卡洛斯Javier Bazan的建议查看输出控制台。在我的情况下,这是控制器中的一个错误:异常错误:操作的HTTP方法不明确-网站R3.Controllers.WHhandlerController.UpdPaymentStatus

e37o9pze

e37o9pze5#

当有多个端点具有相同的路由URL时,Swagger可能会抛出此错误。请尝试在所有控制器中解析操作路由URL,并使每个URL唯一。

zte4gxcn

zte4gxcn6#

请检查以上所有选项,因为它可能是其中的任何一个。
但要确保检查路线是否唯一。在我的情况下

[Route("api")]
[ApiController]
public class MyApiForFooAbcCalcController : ControllerBase
{
   // ...
}

路由“api”已在项目的第二个控制器类中定义,这导致了冲突。尽管两个类中的方法都有不同的名称(以及HttpGet、HttpPost...的属性),但冲突仍然存在,并导致了运行时错误。请注意,它编译时没有任何错误。
要解决此问题,请为每个类添加一个更具体的路由,例如:

[Route("api/forFooAbcCalc")]

而另一个则是

[Route("api/forFooXYZCalc")]

然后将编译并再次运行!

dldeef67

dldeef677#

在微软的swagger说明之后,有一行字是这样写的:导航至:https://localhost:/swagger/v1/swagger.json
如果您有错误,它们将在您执行此操作时显示,并带有错误的指示

atmip9wb

atmip9wb8#

问题的原因可能很少
1.未使用正确的数据注解派生控件/操作
1.控件可能具有Action方法以外的公共方法。请确保只有私有非Action方法。

相关问题