Swashbuckle UI 显示不同版本的相同信息

Swashbuckle UI displays same information for different versions

我们已经在 Web Api 项目上实施了 Swashbuckle,我注意到 SwaggerUI 测试工具为地址中指定的任何版本显示完全相同的信息。更具体地说,它显示 SwaggerConfig 中 VersionInfoBuilder 最先出现的 swagger 信息。

例如,如果我导航到“/preview/swagger/index” - 显示的 UI 是与版本 'preview'.

无关的所有 v1 信息

我做错了什么?

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();
            });
    }
}

我认为配置没有错,只是你的期望不正确。

您不必导航到另一个 Swagger UI(位于 preview/docs/index),但您必须将 Swagger UI 指向另一个规范。只需在 header 中的输入框中输入 http://yourserver:yourport/preview/swagger 并按探索。 Swagger UI 现在将加载并显示预览规范。