Procházet zdrojové kódy

新增中间件注入

zhontai před 2 roky
rodič
revize
84c5d81c25

+ 17 - 5
src/platform/ZhonTai.Admin/Core/HostApp.cs

@@ -52,7 +52,7 @@ namespace ZhonTai.Admin.Core
 {
     public class HostApp
     {
-        HostAppOptions _hostAppOptions;
+        readonly HostAppOptions _hostAppOptions;
 
         public HostApp()
         {
@@ -129,7 +129,7 @@ namespace ZhonTai.Admin.Core
             var app = builder.Build();
 
             //配置中间件
-            Configure(app, env, appConfig);
+            ConfigureMiddleware(app, env, configuration, appConfig);
 
             app.Run();
         }
@@ -511,9 +511,19 @@ namespace ZhonTai.Admin.Core
         /// </summary>
         /// <param name="app"></param>
         /// <param name="env"></param>
+        /// <param name="configuration"></param>
         /// <param name="appConfig"></param>
-        private static void Configure(IApplicationBuilder app, IWebHostEnvironment env, AppConfig appConfig)
+        private void ConfigureMiddleware(WebApplication app, IWebHostEnvironment env, IConfiguration configuration, AppConfig appConfig)
         {
+            var hostAppMiddlewareContext = new HostAppMiddlewareContext()
+            {
+                App = app,
+                Environment = env,
+                Configuration = configuration
+            };
+
+            _hostAppOptions?.ConfigurePreMiddleware?.Invoke(hostAppMiddlewareContext);
+
             //IP限流
             if (appConfig.RateLimit)
             {
@@ -552,6 +562,8 @@ namespace ZhonTai.Admin.Core
                 endpoints.MapControllers();
             });
 
+            _hostAppOptions?.ConfigureMiddleware?.Invoke(hostAppMiddlewareContext);
+
             #region Swagger Api文档
             if (env.IsDevelopment() || appConfig.Swagger.Enable)
             {
@@ -585,7 +597,7 @@ namespace ZhonTai.Admin.Core
                         options.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"ZhonTai.Host {version}");
                     });
                 });
-            } 
+            }
             #endregion
 
             //数据库日志
@@ -594,7 +606,7 @@ namespace ZhonTai.Admin.Core
             //ei.Properties["id"] = YitIdHelper.NextId();
             //log.Log(ei);
 
-
+            _hostAppOptions?.ConfigurePostMiddleware?.Invoke(hostAppMiddlewareContext);
         }
     }
 }

+ 1 - 1
src/platform/ZhonTai.Admin/Core/Logs/ApiHelper.cs

@@ -12,7 +12,7 @@ namespace ZhonTai.Admin.Core.Logs
     public class ApiHelper
     {
         private List<ApiHelperDto> _apis;
-        private static readonly object _lockObject = new object();
+        private static readonly object _lockObject = new();
 
         private readonly IApiRepository _apiRepository;
         public ApiHelper(IApiRepository apiRepository)

+ 28 - 0
src/platform/ZhonTai.Admin/Core/Startup/HostAppMiddlewareContext.cs

@@ -0,0 +1,28 @@
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+
+namespace ZhonTai.Admin.Core.Startup
+{
+    /// <summary>
+    /// HostApp中间件上下文
+    /// </summary>
+    public class HostAppMiddlewareContext
+    {
+        /// <summary>
+        /// 服务
+        /// </summary>
+        public WebApplication App { get; set; }
+
+        /// <summary>
+        /// 环境
+        /// </summary>
+        public IHostEnvironment Environment { get; set; }
+
+        /// <summary>
+        /// 配置
+        /// </summary>
+        public IConfiguration Configuration { get; set; }
+    }
+
+}

+ 15 - 0
src/platform/ZhonTai.Admin/Core/Startup/HostAppOptions.cs

@@ -20,5 +20,20 @@ namespace ZhonTai.Admin.Core.Startup
         /// 注入后置服务
         /// </summary>
         public Action<HostAppContext> ConfigurePostServices { get; set; }
+
+        /// <summary>
+        /// 注入前置中间件
+        /// </summary>
+        public Action<HostAppMiddlewareContext> ConfigurePreMiddleware { get; set; }
+
+        /// <summary>
+        /// 注入中间件
+        /// </summary>
+        public Action<HostAppMiddlewareContext> ConfigureMiddleware { get; set; }
+
+        /// <summary>
+        /// 注入后置中间件
+        /// </summary>
+        public Action<HostAppMiddlewareContext> ConfigurePostMiddleware { get; set; }
     }
 }

+ 37 - 1
src/platform/ZhonTai.Admin/ZhonTai.Admin.xml

@@ -1169,12 +1169,13 @@
             <param name="configHelper"></param>
             <param name="appConfig"></param>
         </member>
-        <member name="M:ZhonTai.Admin.Core.HostApp.Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Hosting.IWebHostEnvironment,ZhonTai.Admin.Core.Configs.AppConfig)">
+        <member name="M:ZhonTai.Admin.Core.HostApp.ConfigureMiddleware(Microsoft.AspNetCore.Builder.WebApplication,Microsoft.AspNetCore.Hosting.IWebHostEnvironment,Microsoft.Extensions.Configuration.IConfiguration,ZhonTai.Admin.Core.Configs.AppConfig)">
             <summary>
             配置中间件
             </summary>
             <param name="app"></param>
             <param name="env"></param>
+            <param name="configuration"></param>
             <param name="appConfig"></param>
         </member>
         <member name="T:ZhonTai.Admin.Core.Logs.ApiHelper">
@@ -1313,6 +1314,26 @@
             配置
             </summary>
         </member>
+        <member name="T:ZhonTai.Admin.Core.Startup.HostAppMiddlewareContext">
+            <summary>
+            HostApp中间件上下文
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Core.Startup.HostAppMiddlewareContext.App">
+            <summary>
+            服务
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Core.Startup.HostAppMiddlewareContext.Environment">
+            <summary>
+            环境
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Core.Startup.HostAppMiddlewareContext.Configuration">
+            <summary>
+            配置
+            </summary>
+        </member>
         <member name="T:ZhonTai.Admin.Core.Startup.HostAppOptions">
             <summary>
             HostApp配置
@@ -1333,6 +1354,21 @@
             注入后置服务
             </summary>
         </member>
+        <member name="P:ZhonTai.Admin.Core.Startup.HostAppOptions.ConfigurePreMiddleware">
+            <summary>
+            注入前置中间件
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Core.Startup.HostAppOptions.ConfigureMiddleware">
+            <summary>
+            注入中间件
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Core.Startup.HostAppOptions.ConfigurePostMiddleware">
+            <summary>
+            注入后置中间件
+            </summary>
+        </member>
         <member name="T:ZhonTai.Admin.Domain.Api.ApiEntity">
             <summary>
             接口管理