我正在使用 Swashbuckler 版本。5.6.0 在 webapi 项目配置中说: c.Schemes(new[] { "https" });
尽管如此,当我访问我网站的 swagger 文档页面时,它会尝试加载:http://{swagger-docs-url}/swagger/v1,而不是 https,并且由于混合内容而失败
我在这里做错了什么?能
我正在使用 Swashbuckler 版本。5.6.0 在 webapi 项目配置中说: c.Schemes(new[] { "https" });
尽管如此,当我访问我网站的 swagger 文档页面时,它会尝试加载:http://{swagger-docs-url}/swagger/v1,而不是 https,并且由于混合内容而失败
我在这里做错了什么?能
实际上,Swashbuckle 会检测主机上的 Uri 并使用 Uri Scheme / 端口作为您 {swagger-docs-url}的 .
//SwaggerConfig.cs
config.EnableSwagger(c =>
{
c.RootUrl(ResolveBasePath);
c.Schemes(new[] { "http", "https" });
}
internal static string ResolveBasePath(HttpRequestMessage message)
{
//fix for Cloudflare Flexible SSL and localhost test
var scheme = message.RequestUri.Host.IndexOf("localhost") > -1 ? "http://" : "https://";
return scheme + message.RequestUri.Authority;
}
我有一个使用 Cloudflare Flexible SSL 的站点,服务器在 HTTP 上运行,但到 Cloudflare 的入站连接是 HTTPS,所以我需要将 Uri 方案强制为 HTTPS,除非我在本地主机上进行测试。
配置中的c.Schemes(new[] { "https" });仅影响生成的招摇:
这将强制以下输出:
{
"swagger": "2.0",
"info": {
"version": "V1",
"title": "Swagger_Test",
},
"host": "yourhost.azurewebsites.net",
"schemes": [
"https"
],
您的问题不完整,但我相信您正在寻找的是 rootUrl:https ://github.com/domaindrivendev/Swashbuckle#rooturl