在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

Swagger error on IIS

可以访问端点本身(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的提示,但没有任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)