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")
我使用 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")