如何解决在IIS上托管NetCore 3.1 Web Api时找不到openapi.json
我使用openapi生成器通过以下命令为ASP.NET Core 3.1生成了服务器存根:
npx @openapitools/openapi-generator-cli generate -i myapi.json -g aspnetcore -o C:\myapi --additional-properties aspnetCoreVersion=3.1
在Visual Studio 2019中打开该项目并运行它之后,我得到了一个醒目的页面,可以在其中尝试不同的端点。到目前为止,很好。
但是:在将其发布到我们的IIS服务器并访问正确的URL后,错误页面就会加载:
未找到:/swagger/1.0.0/openapi.json
可以访问端点本身(GET请求)。
startup.cs中的Swagger端点代码是由open-api生成器生成的默认代码:
app.UseSwagger(c =>
{
c.RouteTemplate = "swagger/{documentName}/openapi.json";
})
.UseSwaggerUI(c =>
{
//TODO: Either use the SwaggerGen generated Swagger contract (generated from C# classes)
c.SwaggerEndpoint("/swagger/1.0.0/openapi.json","Swagger WP RUH Delivery");
//TODO: Or alternatively use the original Swagger contract that's included in the static files
// c.SwaggerEndpoint("/openapi-original.json","Swagger WP RUH Delivery Original");
});
为什么此Swagger页面在我的机器上可以运行,但是在IIS上却出问题了? 我发现了一些有关在startup.cs中更改c.SwaggerEndpoint的提示,但没有任何帮助。
解决方法
尝试从网址路径中删除/swagger/
:
c.SwaggerEndpoint("1.0.0/openapi.json","Swagger WP RUH Delivery")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。