На самом деле Swashbuckle обнаружит Uri на хосте и использует схему / порт Uri в качестве {swagger-docs-url}
, поэтому, если ваш хост, работающий по HTTP, получает только HTTP, вы можете настроить rooturl для его исправления.
//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, если я не проверил на своем локальном хосте.