5

我正在使用 ASP.NET Core 和 NSwag 来托管和描述在 IIS 中托管的具有 Windows 身份验证的新 Web 服务。

在本地,我使用 https 运行 Web 服务,但是当我部署到测试环境时,Web 服务位于具有 SSL 卸载功能的负载均衡器后面。这意味着即使站点在浏览器中看起来是在 SSL 下运行的,但 IIS 中的实际绑定是 http。所以我的 Swagger UI 页面(和 swagger.json 定义)将支持的方案描述为 http。

我想要 Swagger.json 中的 Schemes 元素,我用它来读取“https”而不是“http”。谁能帮我找到我需要在代码中设置的属性以手动设置方案?

{
    x-generator: "NSwag v11.19.1.0 (NJsonSchema v9.10.72.0 (Newtonsoft.Json v11.0.0.0))",
    swagger: "2.0",
    info: {
        title: "My API title",
        description: "Provides access to data.",
        version: "1.0.0"
    },
    host: "myhostname.net",
    schemes: [
        "http"
    ],
    etc...
}
4

1 回答 1

13

繁荣。知道了!

终于在Github上找到了答案,下面的代码成功了:

app.UseSwaggerWithApiExplorer(config =>
{
    //...other code omitted...
    config.PostProcess = settings =>
    {
        settings.Schemes.Clear();
        settings.Schemes.Add(NSwag.SwaggerSchema.Https);
    };
});

编辑:

使用NSwag v12

app.UseSwagger(configure => configure.PostProcess = (document, _) => document.Schemes = new[] { SwaggerSchema.Https });
于 2018-10-03T19:59:31.893 回答