From d20ce230b49932d39ee4ce25e39fd78368c3b28a Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 27 六月 2025 17:26:04 +0800 Subject: [PATCH] 优化配置文件和部分日志打印信息 --- App_Start/SwaggerControllerDescProvider.cs | 154 --------------------------------------------------- 1 files changed, 0 insertions(+), 154 deletions(-) diff --git a/App_Start/SwaggerControllerDescProvider.cs b/App_Start/SwaggerControllerDescProvider.cs index 74fd3f2..10f7f94 100644 --- a/App_Start/SwaggerControllerDescProvider.cs +++ b/App_Start/SwaggerControllerDescProvider.cs @@ -80,158 +80,4 @@ return controllerDescDict; } } - - /// <summary> - /// 澧炲己鐗圫wagger鎻愪緵绋嬪簭锛屾敮鎸佹樉绀烘帶鍒跺櫒鍜屾ā鍨嬬殑瀹屾暣鏂囨。娉ㄩ噴 - /// </summary> - public class EnhancedSwaggerCacheProvider : ISwaggerProvider { - private readonly ISwaggerProvider _swaggerProvider; - private static readonly ConcurrentDictionary<string, SwaggerDocument> _cache = new ConcurrentDictionary<string, SwaggerDocument>(); - private readonly string _xmlPath; - - public EnhancedSwaggerCacheProvider(ISwaggerProvider swaggerProvider, string xmlpath) { - _swaggerProvider = swaggerProvider; - _xmlPath = xmlpath; - } - - public SwaggerDocument GetSwagger(string rootUrl, string apiVersion) { - var cacheKey = $"{rootUrl}_{apiVersion}"; - - return _cache.GetOrAdd(cacheKey, _ => - { - var srcDoc = _swaggerProvider.GetSwagger(rootUrl, apiVersion); - - // 娣诲姞鎺у埗鍣ㄦ弿杩�- var (controllerDesc, modelDesc) = GetXmlComments(); - - srcDoc.vendorExtensions = new Dictionary<string, object> - { - { "ControllerDesc", controllerDesc }, - { "ModelDesc", modelDesc } - }; - - // 涓烘ā鍨嬫坊鍔犳弿杩�- EnhanceModelDescriptions(srcDoc, modelDesc); - - return srcDoc; - }); - } - - /// <summary> - /// 浠嶺ML鏂囨。涓彁鍙栨帶鍒跺櫒鍜屾ā鍨嬫弿杩�- /// </summary> - private (ConcurrentDictionary<string, string> controllerDesc, - ConcurrentDictionary<string, string> modelDesc) GetXmlComments() { - var controllerDesc = new ConcurrentDictionary<string, string>(); - var modelDesc = new ConcurrentDictionary<string, string>(); - - if (!File.Exists(_xmlPath)) return (controllerDesc, modelDesc); - - var xmldoc = new XmlDocument(); - xmldoc.Load(_xmlPath); - - foreach (XmlNode node in xmldoc.SelectNodes("//member")) { - var type = node.Attributes?["name"]?.Value; - if (string.IsNullOrEmpty(type)) continue; - - if (type.StartsWith("T:")) { - var arrPath = type.Split('.'); - var typeName = arrPath[arrPath.Length - 1]; // 鑾峰彇鏈�悗涓�儴鍒�- - // 澶勭悊鎺у埗鍣�- if (typeName.EndsWith("Controller")) { - var summaryNode = node.SelectSingleNode("summary"); - if (summaryNode != null && !string.IsNullOrWhiteSpace(summaryNode.InnerText)) { - //var key = typeName[..^"Controller".Length]; - - string key = typeName; - const string controllerSuffix = "Controller"; - if (typeName.EndsWith(controllerSuffix)) { - key = typeName.Substring(0, typeName.Length - controllerSuffix.Length); - } - - controllerDesc.TryAdd(key, summaryNode.InnerText.Trim()); - } - } - // 澶勭悊妯″瀷绫�- else if (IsModelType(node)) { - var summaryNode = node.SelectSingleNode("summary"); - if (summaryNode != null && !string.IsNullOrWhiteSpace(summaryNode.InnerText)) { - modelDesc.TryAdd(typeName, summaryNode.InnerText.Trim()); - } - - // 澶勭悊妯″瀷灞炴� - EnhancePropertyDescriptions(node, modelDesc); - } - } - - } - - return (controllerDesc, modelDesc); - } - - /// <summary> - /// 鍒ゆ柇鏄惁涓烘ā鍨嬬被鍨�- /// </summary> - private bool IsModelType(XmlNode node) { - // 杩欓噷鍙互鏍规嵁瀹為檯闇�眰璋冩暣鍒ゆ柇閫昏緫 - // 渚嬪锛氭帓闄ontroller銆佹帓闄ょ壒瀹氬懡鍚嶇┖闂寸瓑 - var type = node.Attributes?["name"]?.Value ?? ""; - return type.StartsWith("T:") && - !type.EndsWith("Controller") && - !type.Contains(".Controllers.") && - !type.Contains(".Infrastructure."); - } - - /// <summary> - /// 澧炲己妯″瀷灞炴�鐨勬弿杩�- /// </summary> - private void EnhancePropertyDescriptions(XmlNode typeNode, ConcurrentDictionary<string, string> modelDesc) { - var typeName = typeNode.Attributes?["name"]?.Value?.Split('.')?.LastOrDefault()?.Substring(2); - if (string.IsNullOrEmpty(typeName)) return; - - foreach (XmlNode propNode in typeNode.SelectNodes("field|property")) { - var propName = propNode.Attributes?["name"]?.Value; - if (string.IsNullOrEmpty(propName)) continue; - - var summaryNode = propNode.SelectSingleNode("summary"); - var exampleNode = propNode.SelectSingleNode("example"); - - if (summaryNode != null && !string.IsNullOrWhiteSpace(summaryNode.InnerText)) { - var fullPropKey = $"{typeName}.{propName}"; - var description = summaryNode.InnerText.Trim(); - - if (exampleNode != null && !string.IsNullOrWhiteSpace(exampleNode.InnerText)) { - description += $"\n\n绀轰緥: {exampleNode.InnerText.Trim()}"; - } - - modelDesc.TryAdd(fullPropKey, description); - } - } - } - - /// <summary> - /// 澧炲己Swagger鏂囨。涓殑妯″瀷鎻忚堪 - /// </summary> - private void EnhanceModelDescriptions(SwaggerDocument swaggerDoc, ConcurrentDictionary<string, string> modelDesc) { - if (swaggerDoc.definitions == null) return; - - foreach (var definition in swaggerDoc.definitions) { - // 澶勭悊妯″瀷绫绘湰韬弿杩�- if (modelDesc.TryGetValue(definition.Key, out var classDesc)) { - definition.Value.description = classDesc; - } - - // 澶勭悊妯″瀷灞炴�鎻忚堪 - if (definition.Value.properties != null) { - foreach (var property in definition.Value.properties) { - var fullPropKey = $"{definition.Key}.{property.Key}"; - if (modelDesc.TryGetValue(fullPropKey, out var propDesc)) { - property.Value.description = propDesc; - } - } - } - } - } - } } -- Gitblit v1.9.1