Swagger / Swashbuckle - JSON не соответствует схеме XML - PullRequest
0 голосов
/ 16 мая 2019

У меня ASP.NET MVC WebAPI, настроенный на использование OWIN для создания документации.После того, как я выполнил приложение в первый раз, я понял, что файл Json не отражает изменения, сохраненные в файле XML.Любое новое изменение или добавление, которое я сделал на контроллере API, не отражается в файле Json, только в файле XML.Я уже пытался изменить версии установленных пакетов, изменить файл конфигурации Swagger, очистить кэш браузера, изменить браузер, но, похоже, ничего не решает проблему.

Я использую следующие пакеты: Swashbuckle,Swashbuckle.Core и Swashbuckle.OData.Core.

РЕДАКТИРОВАТЬ: Метод регистра SwaggerConfig:

public static void Register(HttpConfiguration _config)
    {
        _config.EnableSwagger(x =>
        {
            x.SingleApiVersion("v1", "NexoCS.Nexo.WebApi");
            x.IncludeXmlComments(() => new XPathDocument(string.Format(@"{0}\bin\ApiDoc.xml", AppDomain.CurrentDomain.BaseDirectory)));
            x.DescribeAllEnumsAsStrings();
            x.PrettyPrint();
            x.RootUrl(req => req.RequestUri.GetLeftPart(UriPartial.Authority) +
                             req.GetRequestContext().VirtualPathRoot.TrimEnd('/'));
            x.UseFullTypeNameInSchemaIds();
            x.OAuth2("OAuth2")
                .Description("OAuth2 Implicit Grant")
                .Flow("implicit")
                .TokenUrl("/token")
                .Scopes(scopes =>
                {
                    scopes.Add("read", "Read access to protected resources");
                    scopes.Add("write", "Write access to protected resources");
                });
            x.CustomProvider(defaultProvider => new ODataSwaggerProvider(defaultProvider, x, _config));
        })
        .EnableSwaggerUi(y => 
        {
            y.EnableOAuth2Support("sampleapi", "samplerealm", "Swagger UI");
            y.EnableDiscoveryUrlSelector();
        });
    }

Startup.cs:

public void Configuration(IAppBuilder app)
    {
        AutoMapperConfig.Config();

        new ApiConfig(app)
            .ConfigureCorsMiddleware(ConfigurationManager.AppSettings["cors"])
            .ConfigureFormatters()
            .ConfigureExceptionHandling()
            .ConfigureSwagger()
            .ConfigureAuth()
            .ConfigureIoc()
            .ConfigureRoutes()
            .UseWebApi();
    }

ConfigureSwagger в ApiConfig:

    private readonly HttpConfiguration _configuration;
    private readonly IAppBuilder _app;

    public ApiConfig(IAppBuilder app)
    {
        if (app == null) throw new ArgumentNullException(nameof(app));
        _app = app;
        _configuration = new HttpConfiguration();        
    }

public ApiConfig ConfigureSwagger()
    {
        SwaggerConfig.Register(_configuration);
        return this;
    }
...