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