В проекте, в котором есть odata и api-контроллер, только odata-контроллер появляются в swagger - PullRequest
0 голосов
/ 14 октября 2018

У меня есть проект, в котором есть OData Controller и Api controller, и я хотел бы показать документ в Swagger UI.

Я использую пример проекта Microsoft Api, который я нашел здесь в качестве основной ссылки.

и реализуйте следующую конфигурацию в моем startup.cs

 public void ConfigureServices( IServiceCollection services )
    {
        services.AddMvc();
        services.AddApiVersioning( options => options.ReportApiVersions = true );
        services.AddOData().EnableApiVersioning();
        services.AddODataApiExplorer(
            options =>
            {
                options.GroupNameFormat = "'v'VVV";
                options.SubstituteApiVersionInUrl = true;
            } );
        services.AddSwaggerGen(
            options =>
            {
                var provider = services.BuildServiceProvider().GetRequiredService<IApiVersionDescriptionProvider>();

                foreach ( var description in provider.ApiVersionDescriptions )
                {
                    options.SwaggerDoc( description.GroupName, CreateInfoForApiVersion( description ) );
                }
            } );
    }

, и это

public void Configure( IApplicationBuilder app, IHostingEnvironment env, VersionedODataModelBuilder modelBuilder, IApiVersionDescriptionProvider provider )
    {
        app.UseMvc( routeBuilder => routeBuilder.MapVersionedODataRoutes( "odata", "api", modelBuilder.GetEdmModels() ) );
        app.UseSwagger();
        app.UseSwaggerUI(
            options =>
            {
                // build a swagger endpoint for each discovered API version
                foreach ( var description in provider.ApiVersionDescriptions )
                {
                    options.SwaggerEndpoint( $"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant() );
                }
            } );
    }

в результате получаются все мои контроллеры odata иметод отображается в Swagger UI, но мой API-контроллер вообще не отображается.

Есть что-то, что я пропускаю?

...