提取错误未定义的swagger/v1/swagger.json .Net Core 3.1 API
我已经尝试了几乎一切,有人能帮助我得到这个修复.提前感谢!
svdrlsy41#
您应该在swagger之前添加符号/:
swagger
/
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "IRIEO.API"); });
kmbjn2e32#
当你的控制器有问题时,通常会显示错误,检查你的控制器的代码,在我的例子中,我忘记了把[HttpDelete(“{id}”)]放在一个方法中,这就是为什么我给出了错误。在调试控制台中,它应该会显示错误,只是寻找它,因为它是纯文本。
k4aesqcs3#
如果有HttpPost,那么您需要确保为其命名。
[HttpPost(nameof(UpdateContactDetails))]
而不仅仅是
[HttpPost]
avwztpqn4#
按照卡洛斯Javier Bazan的建议查看输出控制台。在我的情况下,这是控制器中的一个错误:异常错误:操作的HTTP方法不明确-网站R3.Controllers.WHhandlerController.UpdPaymentStatus
e37o9pze5#
当有多个端点具有相同的路由URL时,Swagger可能会抛出此错误。请尝试在所有控制器中解析操作路由URL,并使每个URL唯一。
zte4gxcn6#
请检查以上所有选项,因为它可能是其中的任何一个。但要确保检查路线是否唯一。在我的情况下
[Route("api")] [ApiController] public class MyApiForFooAbcCalcController : ControllerBase { // ... }
路由“api”已在项目的第二个控制器类中定义,这导致了冲突。尽管两个类中的方法都有不同的名称(以及HttpGet、HttpPost...的属性),但冲突仍然存在,并导致了运行时错误。请注意,它编译时没有任何错误。要解决此问题,请为每个类添加一个更具体的路由,例如:
[Route("api/forFooAbcCalc")]
而另一个则是
[Route("api/forFooXYZCalc")]
然后将编译并再次运行!
dldeef677#
在微软的swagger说明之后,有一行字是这样写的:导航至:https://localhost:/swagger/v1/swagger.json如果您有错误,它们将在您执行此操作时显示,并带有错误的指示
atmip9wb8#
问题的原因可能很少1.未使用正确的数据注解派生控件/操作1.控件可能具有Action方法以外的公共方法。请确保只有私有非Action方法。
8条答案
按热度按时间svdrlsy41#
您应该在
swagger
之前添加符号/
:kmbjn2e32#
当你的控制器有问题时,通常会显示错误,检查你的控制器的代码,在我的例子中,我忘记了把[HttpDelete(“{id}”)]放在一个方法中,这就是为什么我给出了错误。在调试控制台中,它应该会显示错误,只是寻找它,因为它是纯文本。
k4aesqcs3#
如果有HttpPost,那么您需要确保为其命名。
而不仅仅是
avwztpqn4#
按照卡洛斯Javier Bazan的建议查看输出控制台。在我的情况下,这是控制器中的一个错误:异常错误:操作的HTTP方法不明确-网站R3.Controllers.WHhandlerController.UpdPaymentStatus
e37o9pze5#
当有多个端点具有相同的路由URL时,Swagger可能会抛出此错误。请尝试在所有控制器中解析操作路由URL,并使每个URL唯一。
zte4gxcn6#
请检查以上所有选项,因为它可能是其中的任何一个。
但要确保检查路线是否唯一。在我的情况下
路由“api”已在项目的第二个控制器类中定义,这导致了冲突。尽管两个类中的方法都有不同的名称(以及HttpGet、HttpPost...的属性),但冲突仍然存在,并导致了运行时错误。请注意,它编译时没有任何错误。
要解决此问题,请为每个类添加一个更具体的路由,例如:
而另一个则是
然后将编译并再次运行!
dldeef677#
在微软的swagger说明之后,有一行字是这样写的:导航至:https://localhost:/swagger/v1/swagger.json
如果您有错误,它们将在您执行此操作时显示,并带有错误的指示
atmip9wb8#
问题的原因可能很少
1.未使用正确的数据注解派生控件/操作
1.控件可能具有Action方法以外的公共方法。请确保只有私有非Action方法。