netcore 子目录配置swagger

部署到测试环境 反向代理到一个子目录中,导致swagger 能访问但是swagger页面接口调用路径不正确(缺少路径) ,查询相关文档解决。

  public void ConfigureServices(IServiceCollection services)
        {

            services.Configure<IISServerOptions>(options =>
            {
                options.AllowSynchronousIO = true;
            });

            //服务注册
            services.AddSingleton<IUsersDAL, UsersDAL>();
            services.AddSingleton<IRanksDAL, RanksDAL>();
            services.AddSingleton<IRewardsDAL, RewardsDAL>();
            services.AddSingleton<IPrizesDAL, PrizesDAL>();

            services.AddSingleton<IUsersService, UsersService>();
            services.AddSingleton<IRanksService, RanksService>();
            services.AddSingleton<IRewardsService, RewardsService>();
            services.AddSingleton<IPrizesService, PrizesService>();


            services.AddControllers();

            services.AddMvcCore(options =>
            {
                options.Filters.Add(typeof(ApiActionFilter));
                options.Filters.Add(typeof(ApiExceptionFilter));
            });

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo
                {
                    Title = "XX大赛 API",
                    Version = "V1",
                    Description = "XX大赛"
                });
                //为 Swagger JSON and UI设置xml文档注释路径
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                c.IncludeXmlComments(xmlPath);
            });
        }

 



//关键代码在下面 》》》》》
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { var enableSwagger = Configuration.GetValue<bool>("EnableSwagger"); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } if (enableSwagger) { if (env.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "ZJCX.DrivingRace.API v1"); }); } if (env.IsProduction()) { app.UseSwagger(c => { c.PreSerializeFilters.Add((swagger, request) => { OpenApiPaths newPaths = new OpenApiPaths(); foreach (var path in swagger.Paths) { newPaths.Add("/race" + path.Key, path.Value); } swagger.Paths = newPaths; }); }); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/race/swagger/v1/swagger.json", "ZJCX.DrivingRace.API v1"); }); } } //app.UseZJCXWebAPIMiddleware(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseRequestSession(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }

 

posted @ 2021-08-25 09:57  崔国亮  阅读(246)  评论(0)    收藏  举报