Мы реализовали Swashbuckle в нашем проекте Web Api, и я замечаю, что тестовая жгут SwaggerUI отображает ту же самую информацию для любой версии, указанной в адресе. Более конкретно, он отображает информацию о swagger, для которой когда-либо VersionInfoBuilder появляется сначала в SwaggerConfig.Пользовательский интерфейс Swashbuckle отображает ту же информацию для разных версий
Так, например, если я перехожу к «/ preview/swagger/index» - отображаемый пользовательский интерфейс является всей информацией v1, не связанной с версией «preview».
Что я здесь делаю неправильно?
public class SwaggerConfig
{
private SwaggerConfig() { }
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger("{apiVersion}/swagger", c =>
{
c.MultipleApiVersions(
(apiDesc, version) =>
{
var path = apiDesc.RelativePath.Split('/');
var pathVersion = path[0];
return CultureInfo.InvariantCulture.CompareInfo.IndexOf(pathVersion, version, CompareOptions.IgnoreCase) >= 0;
},
vc =>
{
vc.Version("v1", "Api - v1");
vc.Version("preview", "Api - Preview");
});
})
.EnableSwaggerUi("{apiVersion}/swagger/{*assetPath}", c =>
{
c.DisableValidator();
});
}
}
Интересно. Но это кажется странным, если не сказать больше. Почему EnableSwaggerUi() даже беспокоился с {apiVersion} как частью своего шаблона маршрута, а затем даже не отображал версию, продиктованную URL-адресом? Зачем пользователю нужно отключить текстовое поле, а затем нажать кнопку «исследовать»? Я вижу, что есть опция EnableDiscoveryUrlSelector() - это также нежелательно. Просто попросите интерфейс Swagger отобразить правильную информацию на основе текущего маршрута и его значений. – Mike