Swashbuckler / Swagger игнорирует настройки схемы - PullRequest
0 голосов
/ 04 июля 2018

Я использую Swashbuckler вер. 5.6.0 в проекте вебапи Конфигурация говорит: c.Schemes (new [] {"https"});

Несмотря на это, когда я захожу на страницу документации о чванстве для моего сайта, он пытается загрузить: http://{swagger -docs-url} / swagger / v1 вместо https и дает сбой из-за смешанного содержимого

Что я здесь не так делаю? Может

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

На самом деле 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, если я не проверил на своем локальном хосте.

0 голосов
/ 05 июля 2018

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

...