Getting Fetch errorNot Found /swagger/v1/swagger.json in swashbuckle Asp.netcore

Viewed 1579

I have a basic asp.net core 3.1 app. I installed SwashBuckle.ASPNetCore nuget package.

here is my startup.cs. When I run this as a separate application, swagger is working fine. But Once I deploy this to IIS, I am getting 404 not found. Do I need to add a Path somewhere? I looked almost everything but things are not working for me.

enter image description here

 public void ConfigureServices(IServiceCollection services)
    {
        
        JwtSecurityTokenHandler.DefaultMapInboundClaims = false;

        services.AddProtectedWebApi(Configuration);

        // Additional configuration
        services.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options =>
        {
            options.TokenValidationParameters.RoleClaimType = "roles";
        });

      
        // Register the Swagger generator, defining 1 or more Swagger documents
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "Channel.API", Version = "v1" });

            /*var security = new Dictionary<string, IEnumerable<string>>
            {
                {"Bearer", new string[] { }},
            };
            c.AddSecurityDefinition("bearerAuth", new OpenApiSecurityScheme()
            {
                Description =
                    "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
                Name = "Authorization",
                Type = SecuritySchemeType.ApiKey,
                In = ParameterLocation.Header,
                Scheme = "Bearer"
            });
            c.AddSecurityRequirement(new OpenApiSecurityRequirement{
                {
                    new OpenApiSecurityScheme{
                        Reference = new OpenApiReference{
                            Id = "Bearer", //The name of the previously defined security scheme.
                            Type = ReferenceType.SecurityScheme
                        }
                    },new List<string>()
                }
            });*/
        });

        services.AddApplicationInsightsTelemetry();

    }

 
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Enable middleware to serve generated Swagger as a JSON endpoint.
        //app.UseSwagger();

        // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
        // specifying the Swagger JSON endpoint.
       

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
           app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });
        }
        else
        {
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("v1/swagger.json", "My API V1");
            });
        }
        app.UseHsts();
        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthentication();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapDefaultControllerRoute();
            endpoints.MapControllers();
        });

        app.UseElmah();
    }

Update

Resolved this by adding ..

c.SwaggerEndpoint("../swagger/v1/swagger.json", "My API V1");

0 Answers
Related