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(); }); }

浙公网安备 33010602011771号