From 217a65fe8eb2612b7d61e9ce5f450e76bfc318f6 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期一, 09 六月 2025 17:13:15 +0800
Subject: [PATCH] 添加数据库接口日志记录

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs |   97 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 79 insertions(+), 18 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
index ee5bdd9..680b875 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
@@ -4,6 +4,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Net;
 using System.Text;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
@@ -30,18 +31,35 @@
         //todo
         public async Task InvokeAsync(HttpContext context)
         {
+            if (App.ExpDateTime != null && (DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0)
+            {
+                context.Response.StatusCode = HttpStatusCode.InternalServerError.ObjToInt();
+                context.Response.ContentType = "application/json";
+
+                var json = new WebResponseContent();
+
+                json.Message = HttpStatusCode.InternalServerError.ToString();//閿欒淇℃伅
+                json.Code = 500;//500寮傚父 
+
+                StreamWriter streamWriter = new StreamWriter(context.Response.Body);
+                await streamWriter.WriteAsync(json.Serialize());
+                return;
+            }
+
             // 杩囨护锛屽彧鏈夋帴鍙�
             if (context.Request.Path.Value?.Contains("api") ?? false)
             {
                 context.Request.EnableBuffering();
                 Stream originalBody = context.Response.Body;
-
+                string requestParam = string.Empty;
+                string responseParam = string.Empty;
                 try
                 {
+                    (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel).RequestDate = DateTime.Now;
                     try
                     {
                         // 瀛樺偍璇锋眰鏁版嵁
-                        await RequestDataLog(context);
+                        requestParam = RequestDataLog(context);
                         context.Request.Body.Position = 0;
                     }
                     catch { }
@@ -53,18 +71,20 @@
                     try
                     {
                         // 瀛樺偍鍝嶅簲鏁版嵁
-                        ResponseDataLog(context.Response, ms);
+                        responseParam = ResponseDataLog(context.Response);
                     }
                     catch { }
 
                     ms.Position = 0;
                     await ms.CopyToAsync(originalBody);
 
+                    if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true) && !((context.Request.Path.Value?.Contains("DownLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("downLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("UploadApp")) ?? true) && !((context.Request.Path.Value?.Contains("uploadApp")) ?? true))
+                        Logger.Add(requestParam, responseParam);
                 }
                 catch (Exception ex)
                 {
                     // 璁板綍寮傚父
-                    
+
                 }
                 finally
                 {
@@ -76,26 +96,67 @@
                 await _next(context);
             }
         }
-
-
-        private async Task RequestDataLog(HttpContext context)
+        private string RequestDataLog(HttpContext context)
         {
             var request = context.Request;
+
             var sr = new StreamReader(request.Body);
-            //long length = request.Body.Length;
-            RequestLogInfo requestResponse = new RequestLogInfo()
+
+            object obj;
+            string bodyData = sr.ReadToEndAsync().Result;
+            if (request.ContentLength <= 100000)
             {
-                Path = request.Path,
-                QueryString = request.QueryString.ToString(),
-                BodyData = await sr.ReadToEndAsync()
-            };
-            var content = JsonConvert.SerializeObject(requestResponse);
-            if (!string.IsNullOrEmpty(content))
-            {
-                LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "璇锋眰鏁版嵁 -  璇锋眰鏁版嵁绫诲瀷:" + requestResponse.GetType().ToString(), content });
-                request.Body.Position = 0;
+                obj = new
+                {
+                    QueryString = request.QueryString.ToString(),
+                    BodyData = bodyData
+                };
             }
+            else
+            {
+                obj = new
+                {
+                    QueryString = request.QueryString.ToString(),
+                    BodyData = ""
+                };
+            }
+            string data = JsonConvert.SerializeObject(obj);
+
+            request.Body.Position = 0;
+
+            return data;
         }
+        private string ResponseDataLog(HttpResponse response)
+        {
+            if (response.ContentLength <= 100000)
+            {
+                response.Body.Position = 0;
+                using StreamReader stream = new StreamReader(response.Body, leaveOpen: true);
+                string body = stream.ReadToEnd();
+                response.Body.Position = 0;
+                return body;
+            }
+            return "";
+        }
+
+        //private async Task RequestDataLog(HttpContext context)
+        //{
+        //    var request = context.Request;
+        //    var sr = new StreamReader(request.Body);
+        //    //long length = request.Body.Length;
+        //    RequestLogInfo requestResponse = new RequestLogInfo()
+        //    {
+        //        Path = request.Path,
+        //        QueryString = request.QueryString.ToString(),
+        //        BodyData = await sr.ReadToEndAsync()
+        //    };
+        //    var content = JsonConvert.SerializeObject(requestResponse);
+        //    if (!string.IsNullOrEmpty(content))
+        //    {
+        //        LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "璇锋眰鏁版嵁 -  璇锋眰鏁版嵁绫诲瀷:" + requestResponse.GetType().ToString(), content });
+        //        request.Body.Position = 0;
+        //    }
+        //}
 
         private void ResponseDataLog(HttpResponse response, MemoryStream ms)
         {

--
Gitblit v1.9.3