openapi.json 在 IIS 上托管 Net Core 3.1 Web Api 时未找到

openapi.json not found when hosting NetCore 3.1 Web Api on IIS

我使用 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 和 运行 打开该项目后,我得到了 swagger 页面,我可以在其中尝试不同的端点。目前还可以。

但是:在我们的 IIS 服务器上发布此内容并访问正确的 URL 那个 swagger 页面正在加载错误:

Not found: /swagger/1.0.0/openapi.json

Swagger error on IIS

端点本身(GET 请求)可以到达。

startup.cs 中的 Swagger Endpoint 代码是默认代码,因为它是由 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 的提示,但没有任何帮助。

尝试从 URL 路径中删除 /swagger/

c.SwaggerEndpoint("1.0.0/openapi.json", "Swagger WP RUH Delivery")