У меня есть проект, в котором есть 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-контроллер вообще не отображается.
Есть что-то, что я пропускаю?