如何使用 NSwag 和 C# 指定 "scheme" 元素?
How do I specify the "scheme" element using NSwag and C#?
我正在使用 ASP.NET Core 和 NSwag 来托管和描述 IIS 中托管的新 Web 服务,并使用 Windows 身份验证。
我在本地 运行 使用 https 的 Web 服务,但是当我部署到测试环境时,Web 服务位于具有 SSL 卸载功能的负载平衡器后面。这意味着即使该站点在浏览器中显示为 运行 下的 SSL,但 IIS 中的实际绑定是 http。所以我的 Swagger UI 页面(和 swagger.json 定义)将支持的方案描述为 http.
我想要 Swagger.json 中用于读取 "https" 而不是 "http" 的 Schemes 元素。谁能帮我找到我需要在我的代码中设置以手动设置方案的 属性?
{
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...
}
繁荣。知道了!
终于在 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 });
我的项目使用的是 NSwag v13,以下对我有用。
app.UseOpenApi(a => {
a.PostProcess = (document, _) => {
document.Schemes = new[] { OpenApiSchema.Https, OpenApiSchema.Http };
};
});
我正在使用 ASP.NET Core 和 NSwag 来托管和描述 IIS 中托管的新 Web 服务,并使用 Windows 身份验证。
我在本地 运行 使用 https 的 Web 服务,但是当我部署到测试环境时,Web 服务位于具有 SSL 卸载功能的负载平衡器后面。这意味着即使该站点在浏览器中显示为 运行 下的 SSL,但 IIS 中的实际绑定是 http。所以我的 Swagger UI 页面(和 swagger.json 定义)将支持的方案描述为 http.
我想要 Swagger.json 中用于读取 "https" 而不是 "http" 的 Schemes 元素。谁能帮我找到我需要在我的代码中设置以手动设置方案的 属性?
{
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...
}
繁荣。知道了!
终于在 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 });
我的项目使用的是 NSwag v13,以下对我有用。
app.UseOpenApi(a => {
a.PostProcess = (document, _) => {
document.Schemes = new[] { OpenApiSchema.Https, OpenApiSchema.Http };
};
});