Publishing to Azure from VS2019 failed due to not seeing AddSwaggerGen.

VKiq 6 Reputation points
2022-02-11T00:59:44.223+00:00

I have a ASP .NET Core 3.1 app, which I'm trying to Publish to Azure from VS2019.

But the operation failed with the following error:

Publish has encountered an error.
Be sure that the Startup.cs for your application is calling AddSwaggerGen from within ConfigureServices in order to generate swagger file. Visit https://go.microsoft.com/fwlink/?LinkId=2131205&CLCID=0x409 for more information.

But my Startup.cs already have this configured correctly:

   public class Startup  
    {  
        public Startup(IConfiguration configuration)  
        {  
            Configuration = configuration;  
        }  
  
        public IConfiguration Configuration { get; }  
  
        // This method gets called by the runtime. Use this method to add services to the container.  
        public void ConfigureServices(IServiceCollection services)  
        {  
            services.AddSwaggerGen(c =>  
            {  
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "ODataTestProject", Version = "v1" });  
                c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());  
            });  
  
            services.AddControllers();  
            services.AddDbContext<TestProductContext>(options =>  
            {  
                options.UseSqlServer(Configuration["ConnectionStrings:Database"]);  
            });  
              
            services.AddControllers().AddOData(opt =>  
                opt.Filter().Expand().Select().OrderBy().Count().SetMaxTop(100)  
                    .AddRouteComponents("odata", GetEdmModel()));  
  
            //// https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/filters#filter-scopes-and-order-of-execution  
            services.AddMvc(opts => { opts.Filters.Add(new AutoLogAttribute()); });  
            services.AddApplicationInsightsTelemetry();  
        }  
  
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.  
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)  
        {  
            if (env.IsDevelopment())  
            {  
                app.UseDeveloperExceptionPage();  
                app.UseSwagger(c =>  
                {  
                    c.RouteTemplate = "/swagger/{documentName}/swagger.json";  
                });  
                app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ODataTestProject v1"));  
            }  
            app.UseSwagger(c =>  
            {  
                c.RouteTemplate = "/swagger/{documentName}/swagger.json";  
            });  
            app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ODataTestProject v1"));  
  
            app.UseHttpsRedirection();  
  
            ////Send "~/$odata" to debug routing if enable the following middleware  
            app.UseODataRouteDebug();  
  
            //app.UseSerilogRequestLogging();  
  
            app.UseRouting();  
            app.UseAuthorization();  
            app.UseEndpoints(endpoints =>  
            {  
                endpoints.MapControllers();  
            });  
        }  
  
        private static IEdmModel GetEdmModel()  
        {  
            var builder = new ODataConventionModelBuilder();  
            var entitySet = builder.EntitySet<TestProduct>("TestProducts");  
            entitySet.EntityType.HasKey(entity => entity.Id);  
            return builder.GetEdmModel();  
        }  
    }  
ASP.NET Core
ASP.NET Core
A set of technologies in the .NET Framework for building web applications and XML web services.
4,212 questions
{count} votes

1 answer

Sort by: Most helpful
  1. VKiq 6 Reputation points
    2022-02-11T16:17:02.86+00:00

    Seems like removing spaces in the path and also upgrading Swashbuckle packages to the latest version - did the trick.

    1 person found this answer helpful.
    0 comments No comments