From 03ee5dadb09133b56e8597cc0a5bd60a7790b05c Mon Sep 17 00:00:00 2001 From: igeekfan Date: Thu, 16 Dec 2021 21:58:32 +0800 Subject: [PATCH] support config options file --- .../Knife4UIBuilderExtensions.cs | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/IGeekFan.AspNetCore.Knife4jUI/Knife4UIBuilderExtensions.cs b/src/IGeekFan.AspNetCore.Knife4jUI/Knife4UIBuilderExtensions.cs index 8f22498..5cc7910 100644 --- a/src/IGeekFan.AspNetCore.Knife4jUI/Knife4UIBuilderExtensions.cs +++ b/src/IGeekFan.AspNetCore.Knife4jUI/Knife4UIBuilderExtensions.cs @@ -2,29 +2,36 @@ using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; - +using Microsoft.AspNetCore.Hosting; +#if NETSTANDARD2_0 +using IWebHostEnvironment = Microsoft.AspNetCore.Hosting.IHostingEnvironment; +#endif namespace IGeekFan.AspNetCore.Knife4jUI { public static class Knife4UIBuilderExtensions { + public static IApplicationBuilder UseKnife4UI(this IApplicationBuilder app, Knife4UIOptions options) + { + return app.UseMiddleware(options); + } public static IApplicationBuilder UseKnife4UI( this IApplicationBuilder app, Action setupAction = null) { var options = new Knife4UIOptions(); - if (setupAction != null) + using (var scope = app.ApplicationServices.CreateScope()) { - setupAction(options); + options = scope.ServiceProvider.GetRequiredService>().Value; + setupAction?.Invoke(options); } - else - { - options = app.ApplicationServices.GetRequiredService>().Value; - } - - app.UseMiddleware(options); - return app; + if (options.ConfigObject.Urls == null) + { + var hostingEnv = app.ApplicationServices.GetRequiredService(); + options.ConfigObject.Urls = new[] { new UrlDescriptor { Name = $"{hostingEnv.ApplicationName} v1", Url = "v1/swagger.json" } }; + } + return app.UseKnife4UI(options); } } }