黄宗银 7 luni în urmă
părinte
comite
b09ef7c9a9
81 a modificat fișierele cu 3420 adăugiri și 1649 ștergeri
  1. BIN
      Debug/net8.0/Apq.DAL.dll
  2. BIN
      Debug/net8.0/Apq.DAL.pdb
  3. 445 268
      Debug/net8.0/Apq.Web5.deps.json
  4. BIN
      Debug/net8.0/Apq.Web5.dll
  5. BIN
      Debug/net8.0/Apq.Web5.pdb
  6. 0 20
      Debug/net8.0/Apq.Web5.runtimeconfig.json
  7. 365 317
      Debug/net8.0/Apq.deps.json
  8. BIN
      Debug/net8.0/Apq.dll
  9. BIN
      Debug/net8.0/Apq.pdb
  10. 0 13
      Debug/net8.0/Apq.runtimeconfig.json
  11. 232 24
      Debug/net8.0/Apq.xml
  12. BIN
      Release/net8.0/Apq.DAL.dll
  13. BIN
      Release/net8.0/Apq.DAL.pdb
  14. 445 268
      Release/net8.0/Apq.Web5.deps.json
  15. BIN
      Release/net8.0/Apq.Web5.dll
  16. BIN
      Release/net8.0/Apq.Web5.pdb
  17. 0 21
      Release/net8.0/Apq.Web5.runtimeconfig.json
  18. 365 317
      Release/net8.0/Apq.deps.json
  19. BIN
      Release/net8.0/Apq.dll
  20. BIN
      Release/net8.0/Apq.pdb
  21. 0 14
      Release/net8.0/Apq.runtimeconfig.json
  22. 232 24
      Release/net8.0/Apq.xml
  23. BIN
      Wfj/GsProxy/AntiXssLibrary.dll
  24. BIN
      Wfj/GsProxy/Apq.Web5.dll
  25. BIN
      Wfj/GsProxy/Apq.Web5.pdb
  26. 106 53
      Wfj/GsProxy/Apq.Web5.xml
  27. BIN
      Wfj/GsProxy/Apq.dll
  28. BIN
      Wfj/GsProxy/Apq.pdb
  29. 690 108
      Wfj/GsProxy/Apq.xml
  30. BIN
      Wfj/GsProxy/ConsoleTables.dll
  31. 10 4
      Wfj/GsProxy/DefaultConfig/AppConfig.json
  32. 2 2
      Wfj/GsProxy/DefaultConfig/log4net.config
  33. 3 3
      Wfj/GsProxy/DockerBuild.txt
  34. 1 2
      Wfj/GsProxy/Dockerfile
  35. BIN
      Wfj/GsProxy/Google.Protobuf.dll
  36. BIN
      Wfj/GsProxy/Grpc.AspNetCore.Server.ClientFactory.dll
  37. BIN
      Wfj/GsProxy/Grpc.AspNetCore.Server.Reflection.dll
  38. BIN
      Wfj/GsProxy/Grpc.AspNetCore.Server.dll
  39. BIN
      Wfj/GsProxy/Grpc.AspNetCore.Web.dll
  40. BIN
      Wfj/GsProxy/Grpc.Core.Api.dll
  41. BIN
      Wfj/GsProxy/Grpc.Net.Client.dll
  42. BIN
      Wfj/GsProxy/Grpc.Net.ClientFactory.dll
  43. BIN
      Wfj/GsProxy/Grpc.Net.Common.dll
  44. BIN
      Wfj/GsProxy/Grpc.Reflection.dll
  45. 524 191
      Wfj/GsProxy/GsProxy.deps.json
  46. BIN
      Wfj/GsProxy/GsProxy.dll
  47. BIN
      Wfj/GsProxy/GsProxy.exe
  48. BIN
      Wfj/GsProxy/GsProxy.pdb
  49. BIN
      Wfj/GsProxy/Microsoft.Bcl.Cryptography.dll
  50. BIN
      Wfj/GsProxy/Microsoft.Extensions.Configuration.Abstractions.dll
  51. BIN
      Wfj/GsProxy/Microsoft.Extensions.Configuration.FileExtensions.dll
  52. BIN
      Wfj/GsProxy/Microsoft.Extensions.Configuration.Json.dll
  53. BIN
      Wfj/GsProxy/Microsoft.Extensions.Configuration.Xml.dll
  54. BIN
      Wfj/GsProxy/Microsoft.Extensions.Configuration.dll
  55. BIN
      Wfj/GsProxy/Microsoft.Extensions.DependencyInjection.Abstractions.dll
  56. BIN
      Wfj/GsProxy/Microsoft.Extensions.FileProviders.Abstractions.dll
  57. BIN
      Wfj/GsProxy/Microsoft.Extensions.FileProviders.Physical.dll
  58. BIN
      Wfj/GsProxy/Microsoft.Extensions.FileSystemGlobbing.dll
  59. BIN
      Wfj/GsProxy/Microsoft.Extensions.Logging.Abstractions.dll
  60. BIN
      Wfj/GsProxy/Microsoft.Extensions.Primitives.dll
  61. BIN
      Wfj/GsProxy/Microsoft.Security.Application.HtmlSanitization.dll
  62. BIN
      Wfj/GsProxy/System.Configuration.ConfigurationManager.dll
  63. BIN
      Wfj/GsProxy/System.Diagnostics.DiagnosticSource.dll
  64. BIN
      Wfj/GsProxy/System.Diagnostics.EventLog.dll
  65. BIN
      Wfj/GsProxy/System.Formats.Asn1.dll
  66. BIN
      Wfj/GsProxy/System.IO.Pipelines.dll
  67. BIN
      Wfj/GsProxy/System.Security.Cryptography.Pkcs.dll
  68. BIN
      Wfj/GsProxy/System.Security.Cryptography.ProtectedData.dll
  69. BIN
      Wfj/GsProxy/System.Security.Cryptography.Xml.dll
  70. BIN
      Wfj/GsProxy/System.Security.Permissions.dll
  71. BIN
      Wfj/GsProxy/System.Text.Encodings.Web.dll
  72. BIN
      Wfj/GsProxy/System.Text.Json.dll
  73. BIN
      Wfj/GsProxy/Wcwidth.dll
  74. BIN
      Wfj/GsProxy/log4net.dll
  75. BIN
      Wfj/GsProxy/protobuf-net.Core.dll
  76. BIN
      Wfj/GsProxy/protobuf-net.dll
  77. BIN
      Wfj/GsProxy/runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll
  78. BIN
      Wfj/GsProxy/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll
  79. BIN
      Wfj/GsProxy/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll
  80. BIN
      Wfj/GsProxy/runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll
  81. BIN
      Wfj/GsProxy/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll

BIN
Debug/net8.0/Apq.DAL.dll


BIN
Debug/net8.0/Apq.DAL.pdb


Fișier diff suprimat deoarece este prea mare
+ 445 - 268
Debug/net8.0/Apq.Web5.deps.json


BIN
Debug/net8.0/Apq.Web5.dll


BIN
Debug/net8.0/Apq.Web5.pdb


+ 0 - 20
Debug/net8.0/Apq.Web5.runtimeconfig.json

@@ -1,20 +0,0 @@
-{
-  "runtimeOptions": {
-    "tfm": "net8.0",
-    "frameworks": [
-      {
-        "name": "Microsoft.NETCore.App",
-        "version": "8.0.0"
-      },
-      {
-        "name": "Microsoft.AspNetCore.App",
-        "version": "8.0.0"
-      }
-    ],
-    "configProperties": {
-      "System.GC.Server": true,
-      "System.Reflection.NullabilityInfoContext.IsSupported": true,
-      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
-    }
-  }
-}

Fișier diff suprimat deoarece este prea mare
+ 365 - 317
Debug/net8.0/Apq.deps.json


BIN
Debug/net8.0/Apq.dll


BIN
Debug/net8.0/Apq.pdb


+ 0 - 13
Debug/net8.0/Apq.runtimeconfig.json

@@ -1,13 +0,0 @@
-{
-  "runtimeOptions": {
-    "tfm": "net8.0",
-    "framework": {
-      "name": "Microsoft.NETCore.App",
-      "version": "8.0.0"
-    },
-    "configProperties": {
-      "System.Reflection.NullabilityInfoContext.IsSupported": true,
-      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
-    }
-  }
-}

+ 232 - 24
Debug/net8.0/Apq.xml

@@ -1040,6 +1040,46 @@
             用另一个集合重置当前集合
             </summary>
         </member>
+        <member name="T:Apq.Collections.WaitableQueue`1">
+            <summary>
+            出队时自动等到队列中有内容,可指定等待的时长
+            立即入队
+            </summary>
+            <param name="capacity">队列的初始容量</param>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.#ctor(System.Int32)">
+            <summary>
+            出队时自动等到队列中有内容,可指定等待的时长
+            立即入队
+            </summary>
+            <param name="capacity">队列的初始容量</param>
+        </member>
+        <member name="F:Apq.Collections.WaitableQueue`1.deLock">
+            <summary>
+            出队入队的信号量
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.Dispose(System.Boolean)">
+            <param name="disposing">指定释放类型{true:托管对象,false:未托管对象}</param>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.Enqueue(`0)">
+            <summary>
+            入队
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.Dequeue">
+            <summary>
+            隐藏基类的出队
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.Dequeue(System.Int32)">
+            <summary>
+            出队
+            </summary>
+            <param name="ms">最大等待时长。0表示不等待,立即出队(不管队列中有没有子项);
+            &lt;0表示不会超时(即无限等待到队列有子项可出队)</param>
+            <returns>如果超时,将返回类型T的默认值</returns>
+        </member>
         <member name="T:Apq.Configs">
             <summary>
             配置缓存(配置文件名不能重复,即使是位于不同目录)
@@ -1090,20 +1130,24 @@
             加载配置
             </summary>
         </member>
-        <member name="M:Apq.Configuration.ConfigBase.Get(System.String)">
+        <member name="M:Apq.Configuration.ConfigBase.GetString(System.String,System.String)">
             <summary>
             获取配置值
             </summary>
+            <param name="path">配置的路径</param>
+            <param name="defaultValue">如果没有找到配置返回的值(字符串)</param>
         </member>
-        <member name="M:Apq.Configuration.ConfigBase.Set(System.String,System.String)">
+        <member name="M:Apq.Configuration.ConfigBase.SetString(System.String,System.String)">
             <summary>
             设置配置值
             </summary>
         </member>
-        <member name="M:Apq.Configuration.ConfigBase.Get``1(System.String)">
+        <member name="M:Apq.Configuration.ConfigBase.Get``1(System.String,``0)">
             <summary>
-            获取配置值
+            获取配置值(自动从字符串转为需要的类型)
             </summary>
+            <param name="path">配置的路径</param>
+            <param name="defaultValue">如果没有找到配置返回的值(类型T)</param>
         </member>
         <member name="T:Apq.Configuration.FileConfig">
             <summary>
@@ -1130,12 +1174,10 @@
             配置命名
             </summary>
         </member>
-        <member name="M:Apq.Configuration.FileConfig.Get(System.String)">
-            <summary>
-            获取配置值
-            </summary>
+        <member name="M:Apq.Configuration.FileConfig.GetString(System.String,System.String)">
+            <inheritdoc />
         </member>
-        <member name="M:Apq.Configuration.FileConfig.Set(System.String,System.String)">
+        <member name="M:Apq.Configuration.FileConfig.SetString(System.String,System.String)">
             <summary>
             设置配置值
             </summary>
@@ -1151,9 +1193,9 @@
             加载配置
             </summary>
         </member>
-        <member name="M:Apq.Configuration.JsonConfig.Set(System.String,System.String)">
+        <member name="M:Apq.Configuration.JsonConfig.SetString(System.String,System.String)">
             <summary>
-            设置配置值
+            设置配置值,能设置才设置并立即保存到用户配置文件中
             </summary>
         </member>
         <member name="T:Apq.Configuration.XmlConfig">
@@ -1166,6 +1208,91 @@
             加载配置
             </summary>
         </member>
+        <member name="M:Apq.Configuration.XmlConfig.FindDeepestSection(System.Xml.XmlDocument,System.Collections.Generic.List{Apq.Configuration.XmlConfigPathToken})">
+            <summary>
+            按Token列表在Xml文档中查找最深节点
+            </summary>
+            <param name="xd">Xml文档</param>
+            <param name="tokens">Token列表</param>
+            <returns>(找到的节点,查找到哪个索引号[0开始])</returns>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.WriteConfigValue(System.Xml.XmlDocument,System.String,System.String)">
+            <summary>
+            在Xml文档中写入配置值(仅内存中)
+            </summary>
+            <param name="xd">Xml文档</param>
+            <param name="path">配置路径</param>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.WriteConfigValue(System.Xml.XmlDocument,System.Collections.Generic.List{Apq.Configuration.XmlConfigPathToken},System.String)">
+            <summary>
+            在Xml文档中写入配置值(仅内存中)
+            </summary>
+            <param name="xd">Xml文档</param>
+            <param name="tokens">Token列表</param>
+            <returns>是否写入成功</returns>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.AddConfigValue(System.Xml.XmlDocument,System.Xml.XmlNode,System.Collections.Generic.List{Apq.Configuration.XmlConfigPathToken},System.String)">
+            <summary>
+            在父节点下添加配置值(仅内存中)
+            </summary>
+            <param name="xd">Xml文档</param>
+            <param name="parent">父级节点</param>
+            <param name="tokens">Token列表,其所有子项在node中均无对应节点存在</param>
+            <returns>是否添加成功</returns>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.SetString(System.String,System.String)">
+            <summary>
+            设置配置值,能设置才设置并立即保存到用户配置文件中
+            </summary>
+        </member>
+        <member name="F:Apq.Configuration.XmlConfigPathType.None">
+            <summary>
+            未定义、未知
+            </summary>
+        </member>
+        <member name="F:Apq.Configuration.XmlConfigPathType.Section">
+            <summary>
+            节点名称
+            </summary>
+        </member>
+        <member name="F:Apq.Configuration.XmlConfigPathType.NameAttribute">
+            <summary>
+            name属性
+            </summary>
+        </member>
+        <member name="F:Apq.Configuration.XmlConfigPathType.Index">
+            <summary>
+            第几个节点(0开始)
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.XmlConfigPathToken.Path">
+            <summary>
+            路径值
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.XmlConfigPathToken.Type">
+            <summary>
+            路径类型
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfigPathToken.CreateTokens(System.String)">
+            <summary>
+            从配置路径创建Token列表
+            </summary>
+            <param name="path">配置路径</param>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfigPathToken.CreateXPath(System.String)">
+            <summary>
+            从配置路径创建XPath表达式
+            </summary>
+            <param name="path">配置路径</param>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfigPathToken.CreateXPath(System.Collections.Generic.List{Apq.Configuration.XmlConfigPathToken})">
+            <summary>
+            从Token列表创建XPath表达式
+            </summary>
+            <param name="tokens">Token列表</param>
+        </member>
         <member name="T:Apq.ConnectionStrings.Access2007.OleDbConnection">
             <summary>
             OLEDB 连接字符串[可能不对]
@@ -2056,17 +2183,6 @@
             <returns>MsSqlType:枚举实例,
             TypeFrom:类型是根据什么解析出来的{0:未定义,1:Sql列类型,2:C#变量类型}</returns>
         </member>
-        <member name="M:Apq.DB.SQLite.Meta.CreateDBIfNotExists(System.String)">
-            <summary>
-            若数据库文件不存在,则创建数据库文件
-            </summary>
-            <returns>执行了创建文件时返回true</returns>
-        </member>
-        <member name="M:Apq.DB.SQLite.Meta.CreateTableIfNotExists(System.String,System.String,System.String,System.String)">
-            <summary>
-            建表(可选参数:初始数据)
-            </summary>
-        </member>
         <member name="T:Apq.Delegates">
             <summary>
             代理及其示例方法
@@ -3018,10 +3134,11 @@
             EF的扩展方法
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_EF.ExecuteSqlCommand(System.Data.Entity.Database,System.Collections.Generic.IList{System.Tuple{System.String,System.Data.Common.DbParameter[]}})">
+        <member name="M:Apq.Extension.Ext_EF.ExecuteSqlCommand(Microsoft.EntityFrameworkCore.DbContext,System.Collections.Generic.IList{System.Tuple{System.String,System.Data.Common.DbParameter[]}})">
             <summary>
             执行多条sql语句
             </summary>
+            <returns>总共影响的行数</returns>
         </member>
         <member name="T:Apq.Extension.Ext_Enum">
             <summary>
@@ -3837,6 +3954,15 @@
             从字符串中剥离数字。按拆分点提取为 字符串列表 与 数字串(转为数值)列表
             </summary>
         </member>
+        <member name="M:Apq.Extension.Ext_Xml.LoadOrDefault(System.Xml.XmlDocument,System.String,System.String,System.Text.Encoding)">
+            <summary>
+            从文件加载,失败时加载为默认内容"&lt;root />"
+            </summary>
+            <param name="xd"></param>
+            <param name="filePath">文件路径</param>
+            <param name="defaultXml">默认Xml串</param>
+            <param name="encoding">指定文件编码格式,默认为UTF8</param>
+        </member>
         <member name="T:Apq.GlobalObject">
             <summary>
             全局对象
@@ -3889,6 +4015,21 @@
             <param name="factory">提供创建实例的方法</param>
             <remarks>创建实例后立即自动调用初始化方法(Init)</remarks>
         </member>
+        <member name="P:Apq.GlobalObject.FixedThreadTaskScheduler">
+            <summary>
+            获取默认的使用自定义线程池的任务调度器(建议仅用于可延迟执行的长时任务),线程数在配置文件中指定
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.RunInNewBgThreadTaskScheduler">
+            <summary>
+            获取默认的使用新线程(后台)的任务调度器
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.RunInNewFgThreadTaskScheduler">
+            <summary>
+            获取默认的使用新线程(前台)的任务调度器
+            </summary>
+        </member>
         <member name="T:Apq.IExpire">
             <summary>
             可过期
@@ -4229,6 +4370,16 @@
             命令
             </summary>
         </member>
+        <member name="T:Apq.Net.JsonParams.ServerCloseParam">
+            <summary>
+            服务端主动关闭连接
+            </summary>
+        </member>
+        <member name="P:Apq.Net.JsonParams.ServerCloseParam.Cmd">
+            <summary>
+            命令
+            </summary>
+        </member>
         <member name="T:Apq.Net.Local">
             <summary>
             本机功能
@@ -4418,7 +4569,7 @@
             异步关闭长连接
             </summary>
         </member>
-        <member name="M:Apq.Net.PersistentClient.DoTask_Close(System.String)">
+        <member name="M:Apq.Net.PersistentClient.DoTask_Close">
             <summary>
             任务实现:关闭长连接
             </summary>
@@ -5639,6 +5790,63 @@
             <param name="interval">循环操作的间隔时间。单位毫秒。</param>
             <returns>是否操作成功</returns>
         </member>
+        <member name="T:Apq.Tasking.FixedThreadTaskScheduler">
+            <summary>
+            在 自定义线程池(固定线程数) 中执行任务的任务调度器
+            </summary>
+        </member>
+        <member name="F:Apq.Tasking.FixedThreadTaskScheduler.TaskQueue">
+            <summary>
+            任务队列
+            </summary>
+        </member>
+        <member name="F:Apq.Tasking.FixedThreadTaskScheduler._threads">
+            <summary>
+            自定义线程池
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.Dispose(System.Boolean)">
+            <param name="disposing">指定释放类型{true:托管对象,false:未托管对象}</param>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.#ctor(System.Int32,System.Boolean)">
+            <summary>
+            在自定义线程池中执行任务的任务调度器(固定线程数)
+            </summary>
+            <param name="threadCount">线程数(小于1时视为1)</param>
+            <param name="isBackground">是否为后台线程</param>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.GetScheduledTasks">
+            <summary>
+            获取排队中的任务列表
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task,System.Boolean)">
+            <summary>
+            在调用方线程立即执行任务(但如果任务已入队,就不执行了) 
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.Run(System.Action)">
+            <summary>
+            将任务入队,在有线程可用时开始执行
+            </summary>
+        </member>
+        <member name="T:Apq.Tasking.RunInNewThreadTaskScheduler">
+            <summary>
+            总是立即启动新线程执行任务,不限制线程数量
+            </summary>
+            <param name="bg">新线程是否为后台线程</param>
+        </member>
+        <member name="M:Apq.Tasking.RunInNewThreadTaskScheduler.#ctor(System.Boolean)">
+            <summary>
+            总是立即启动新线程执行任务,不限制线程数量
+            </summary>
+            <param name="bg">新线程是否为后台线程</param>
+        </member>
+        <member name="M:Apq.Tasking.RunInNewThreadTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task,System.Boolean)">
+            <summary>
+            在调用方线程立即执行任务
+            </summary>
+        </member>
         <member name="M:Apq.Tasking.TaskHelper.WaitUntil(System.Threading.CancellationToken,System.Func{System.Boolean},System.Int32,System.Int32)">
             <summary>
             等待到条件成立或超时

BIN
Release/net8.0/Apq.DAL.dll


BIN
Release/net8.0/Apq.DAL.pdb


Fișier diff suprimat deoarece este prea mare
+ 445 - 268
Release/net8.0/Apq.Web5.deps.json


BIN
Release/net8.0/Apq.Web5.dll


BIN
Release/net8.0/Apq.Web5.pdb


+ 0 - 21
Release/net8.0/Apq.Web5.runtimeconfig.json

@@ -1,21 +0,0 @@
-{
-  "runtimeOptions": {
-    "tfm": "net8.0",
-    "frameworks": [
-      {
-        "name": "Microsoft.NETCore.App",
-        "version": "8.0.0"
-      },
-      {
-        "name": "Microsoft.AspNetCore.App",
-        "version": "8.0.0"
-      }
-    ],
-    "configProperties": {
-      "System.GC.Server": true,
-      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
-      "System.Reflection.NullabilityInfoContext.IsSupported": true,
-      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
-    }
-  }
-}

Fișier diff suprimat deoarece este prea mare
+ 365 - 317
Release/net8.0/Apq.deps.json


BIN
Release/net8.0/Apq.dll


BIN
Release/net8.0/Apq.pdb


+ 0 - 14
Release/net8.0/Apq.runtimeconfig.json

@@ -1,14 +0,0 @@
-{
-  "runtimeOptions": {
-    "tfm": "net8.0",
-    "framework": {
-      "name": "Microsoft.NETCore.App",
-      "version": "8.0.0"
-    },
-    "configProperties": {
-      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
-      "System.Reflection.NullabilityInfoContext.IsSupported": true,
-      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
-    }
-  }
-}

+ 232 - 24
Release/net8.0/Apq.xml

@@ -1040,6 +1040,46 @@
             用另一个集合重置当前集合
             </summary>
         </member>
+        <member name="T:Apq.Collections.WaitableQueue`1">
+            <summary>
+            出队时自动等到队列中有内容,可指定等待的时长
+            立即入队
+            </summary>
+            <param name="capacity">队列的初始容量</param>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.#ctor(System.Int32)">
+            <summary>
+            出队时自动等到队列中有内容,可指定等待的时长
+            立即入队
+            </summary>
+            <param name="capacity">队列的初始容量</param>
+        </member>
+        <member name="F:Apq.Collections.WaitableQueue`1.deLock">
+            <summary>
+            出队入队的信号量
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.Dispose(System.Boolean)">
+            <param name="disposing">指定释放类型{true:托管对象,false:未托管对象}</param>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.Enqueue(`0)">
+            <summary>
+            入队
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.Dequeue">
+            <summary>
+            隐藏基类的出队
+            </summary>
+        </member>
+        <member name="M:Apq.Collections.WaitableQueue`1.Dequeue(System.Int32)">
+            <summary>
+            出队
+            </summary>
+            <param name="ms">最大等待时长。0表示不等待,立即出队(不管队列中有没有子项);
+            &lt;0表示不会超时(即无限等待到队列有子项可出队)</param>
+            <returns>如果超时,将返回类型T的默认值</returns>
+        </member>
         <member name="T:Apq.Configs">
             <summary>
             配置缓存(配置文件名不能重复,即使是位于不同目录)
@@ -1090,20 +1130,24 @@
             加载配置
             </summary>
         </member>
-        <member name="M:Apq.Configuration.ConfigBase.Get(System.String)">
+        <member name="M:Apq.Configuration.ConfigBase.GetString(System.String,System.String)">
             <summary>
             获取配置值
             </summary>
+            <param name="path">配置的路径</param>
+            <param name="defaultValue">如果没有找到配置返回的值(字符串)</param>
         </member>
-        <member name="M:Apq.Configuration.ConfigBase.Set(System.String,System.String)">
+        <member name="M:Apq.Configuration.ConfigBase.SetString(System.String,System.String)">
             <summary>
             设置配置值
             </summary>
         </member>
-        <member name="M:Apq.Configuration.ConfigBase.Get``1(System.String)">
+        <member name="M:Apq.Configuration.ConfigBase.Get``1(System.String,``0)">
             <summary>
-            获取配置值
+            获取配置值(自动从字符串转为需要的类型)
             </summary>
+            <param name="path">配置的路径</param>
+            <param name="defaultValue">如果没有找到配置返回的值(类型T)</param>
         </member>
         <member name="T:Apq.Configuration.FileConfig">
             <summary>
@@ -1130,12 +1174,10 @@
             配置命名
             </summary>
         </member>
-        <member name="M:Apq.Configuration.FileConfig.Get(System.String)">
-            <summary>
-            获取配置值
-            </summary>
+        <member name="M:Apq.Configuration.FileConfig.GetString(System.String,System.String)">
+            <inheritdoc />
         </member>
-        <member name="M:Apq.Configuration.FileConfig.Set(System.String,System.String)">
+        <member name="M:Apq.Configuration.FileConfig.SetString(System.String,System.String)">
             <summary>
             设置配置值
             </summary>
@@ -1151,9 +1193,9 @@
             加载配置
             </summary>
         </member>
-        <member name="M:Apq.Configuration.JsonConfig.Set(System.String,System.String)">
+        <member name="M:Apq.Configuration.JsonConfig.SetString(System.String,System.String)">
             <summary>
-            设置配置值
+            设置配置值,能设置才设置并立即保存到用户配置文件中
             </summary>
         </member>
         <member name="T:Apq.Configuration.XmlConfig">
@@ -1166,6 +1208,91 @@
             加载配置
             </summary>
         </member>
+        <member name="M:Apq.Configuration.XmlConfig.FindDeepestSection(System.Xml.XmlDocument,System.Collections.Generic.List{Apq.Configuration.XmlConfigPathToken})">
+            <summary>
+            按Token列表在Xml文档中查找最深节点
+            </summary>
+            <param name="xd">Xml文档</param>
+            <param name="tokens">Token列表</param>
+            <returns>(找到的节点,查找到哪个索引号[0开始])</returns>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.WriteConfigValue(System.Xml.XmlDocument,System.String,System.String)">
+            <summary>
+            在Xml文档中写入配置值(仅内存中)
+            </summary>
+            <param name="xd">Xml文档</param>
+            <param name="path">配置路径</param>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.WriteConfigValue(System.Xml.XmlDocument,System.Collections.Generic.List{Apq.Configuration.XmlConfigPathToken},System.String)">
+            <summary>
+            在Xml文档中写入配置值(仅内存中)
+            </summary>
+            <param name="xd">Xml文档</param>
+            <param name="tokens">Token列表</param>
+            <returns>是否写入成功</returns>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.AddConfigValue(System.Xml.XmlDocument,System.Xml.XmlNode,System.Collections.Generic.List{Apq.Configuration.XmlConfigPathToken},System.String)">
+            <summary>
+            在父节点下添加配置值(仅内存中)
+            </summary>
+            <param name="xd">Xml文档</param>
+            <param name="parent">父级节点</param>
+            <param name="tokens">Token列表,其所有子项在node中均无对应节点存在</param>
+            <returns>是否添加成功</returns>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfig.SetString(System.String,System.String)">
+            <summary>
+            设置配置值,能设置才设置并立即保存到用户配置文件中
+            </summary>
+        </member>
+        <member name="F:Apq.Configuration.XmlConfigPathType.None">
+            <summary>
+            未定义、未知
+            </summary>
+        </member>
+        <member name="F:Apq.Configuration.XmlConfigPathType.Section">
+            <summary>
+            节点名称
+            </summary>
+        </member>
+        <member name="F:Apq.Configuration.XmlConfigPathType.NameAttribute">
+            <summary>
+            name属性
+            </summary>
+        </member>
+        <member name="F:Apq.Configuration.XmlConfigPathType.Index">
+            <summary>
+            第几个节点(0开始)
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.XmlConfigPathToken.Path">
+            <summary>
+            路径值
+            </summary>
+        </member>
+        <member name="P:Apq.Configuration.XmlConfigPathToken.Type">
+            <summary>
+            路径类型
+            </summary>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfigPathToken.CreateTokens(System.String)">
+            <summary>
+            从配置路径创建Token列表
+            </summary>
+            <param name="path">配置路径</param>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfigPathToken.CreateXPath(System.String)">
+            <summary>
+            从配置路径创建XPath表达式
+            </summary>
+            <param name="path">配置路径</param>
+        </member>
+        <member name="M:Apq.Configuration.XmlConfigPathToken.CreateXPath(System.Collections.Generic.List{Apq.Configuration.XmlConfigPathToken})">
+            <summary>
+            从Token列表创建XPath表达式
+            </summary>
+            <param name="tokens">Token列表</param>
+        </member>
         <member name="T:Apq.ConnectionStrings.Access2007.OleDbConnection">
             <summary>
             OLEDB 连接字符串[可能不对]
@@ -2056,17 +2183,6 @@
             <returns>MsSqlType:枚举实例,
             TypeFrom:类型是根据什么解析出来的{0:未定义,1:Sql列类型,2:C#变量类型}</returns>
         </member>
-        <member name="M:Apq.DB.SQLite.Meta.CreateDBIfNotExists(System.String)">
-            <summary>
-            若数据库文件不存在,则创建数据库文件
-            </summary>
-            <returns>执行了创建文件时返回true</returns>
-        </member>
-        <member name="M:Apq.DB.SQLite.Meta.CreateTableIfNotExists(System.String,System.String,System.String,System.String)">
-            <summary>
-            建表(可选参数:初始数据)
-            </summary>
-        </member>
         <member name="T:Apq.Delegates">
             <summary>
             代理及其示例方法
@@ -3018,10 +3134,11 @@
             EF的扩展方法
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_EF.ExecuteSqlCommand(System.Data.Entity.Database,System.Collections.Generic.IList{System.Tuple{System.String,System.Data.Common.DbParameter[]}})">
+        <member name="M:Apq.Extension.Ext_EF.ExecuteSqlCommand(Microsoft.EntityFrameworkCore.DbContext,System.Collections.Generic.IList{System.Tuple{System.String,System.Data.Common.DbParameter[]}})">
             <summary>
             执行多条sql语句
             </summary>
+            <returns>总共影响的行数</returns>
         </member>
         <member name="T:Apq.Extension.Ext_Enum">
             <summary>
@@ -3837,6 +3954,15 @@
             从字符串中剥离数字。按拆分点提取为 字符串列表 与 数字串(转为数值)列表
             </summary>
         </member>
+        <member name="M:Apq.Extension.Ext_Xml.LoadOrDefault(System.Xml.XmlDocument,System.String,System.String,System.Text.Encoding)">
+            <summary>
+            从文件加载,失败时加载为默认内容"&lt;root />"
+            </summary>
+            <param name="xd"></param>
+            <param name="filePath">文件路径</param>
+            <param name="defaultXml">默认Xml串</param>
+            <param name="encoding">指定文件编码格式,默认为UTF8</param>
+        </member>
         <member name="T:Apq.GlobalObject">
             <summary>
             全局对象
@@ -3889,6 +4015,21 @@
             <param name="factory">提供创建实例的方法</param>
             <remarks>创建实例后立即自动调用初始化方法(Init)</remarks>
         </member>
+        <member name="P:Apq.GlobalObject.FixedThreadTaskScheduler">
+            <summary>
+            获取默认的使用自定义线程池的任务调度器(建议仅用于可延迟执行的长时任务),线程数在配置文件中指定
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.RunInNewBgThreadTaskScheduler">
+            <summary>
+            获取默认的使用新线程(后台)的任务调度器
+            </summary>
+        </member>
+        <member name="P:Apq.GlobalObject.RunInNewFgThreadTaskScheduler">
+            <summary>
+            获取默认的使用新线程(前台)的任务调度器
+            </summary>
+        </member>
         <member name="T:Apq.IExpire">
             <summary>
             可过期
@@ -4229,6 +4370,16 @@
             命令
             </summary>
         </member>
+        <member name="T:Apq.Net.JsonParams.ServerCloseParam">
+            <summary>
+            服务端主动关闭连接
+            </summary>
+        </member>
+        <member name="P:Apq.Net.JsonParams.ServerCloseParam.Cmd">
+            <summary>
+            命令
+            </summary>
+        </member>
         <member name="T:Apq.Net.Local">
             <summary>
             本机功能
@@ -4418,7 +4569,7 @@
             异步关闭长连接
             </summary>
         </member>
-        <member name="M:Apq.Net.PersistentClient.DoTask_Close(System.String)">
+        <member name="M:Apq.Net.PersistentClient.DoTask_Close">
             <summary>
             任务实现:关闭长连接
             </summary>
@@ -5639,6 +5790,63 @@
             <param name="interval">循环操作的间隔时间。单位毫秒。</param>
             <returns>是否操作成功</returns>
         </member>
+        <member name="T:Apq.Tasking.FixedThreadTaskScheduler">
+            <summary>
+            在 自定义线程池(固定线程数) 中执行任务的任务调度器
+            </summary>
+        </member>
+        <member name="F:Apq.Tasking.FixedThreadTaskScheduler.TaskQueue">
+            <summary>
+            任务队列
+            </summary>
+        </member>
+        <member name="F:Apq.Tasking.FixedThreadTaskScheduler._threads">
+            <summary>
+            自定义线程池
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.Dispose(System.Boolean)">
+            <param name="disposing">指定释放类型{true:托管对象,false:未托管对象}</param>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.#ctor(System.Int32,System.Boolean)">
+            <summary>
+            在自定义线程池中执行任务的任务调度器(固定线程数)
+            </summary>
+            <param name="threadCount">线程数(小于1时视为1)</param>
+            <param name="isBackground">是否为后台线程</param>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.GetScheduledTasks">
+            <summary>
+            获取排队中的任务列表
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task,System.Boolean)">
+            <summary>
+            在调用方线程立即执行任务(但如果任务已入队,就不执行了) 
+            </summary>
+        </member>
+        <member name="M:Apq.Tasking.FixedThreadTaskScheduler.Run(System.Action)">
+            <summary>
+            将任务入队,在有线程可用时开始执行
+            </summary>
+        </member>
+        <member name="T:Apq.Tasking.RunInNewThreadTaskScheduler">
+            <summary>
+            总是立即启动新线程执行任务,不限制线程数量
+            </summary>
+            <param name="bg">新线程是否为后台线程</param>
+        </member>
+        <member name="M:Apq.Tasking.RunInNewThreadTaskScheduler.#ctor(System.Boolean)">
+            <summary>
+            总是立即启动新线程执行任务,不限制线程数量
+            </summary>
+            <param name="bg">新线程是否为后台线程</param>
+        </member>
+        <member name="M:Apq.Tasking.RunInNewThreadTaskScheduler.TryExecuteTaskInline(System.Threading.Tasks.Task,System.Boolean)">
+            <summary>
+            在调用方线程立即执行任务
+            </summary>
+        </member>
         <member name="M:Apq.Tasking.TaskHelper.WaitUntil(System.Threading.CancellationToken,System.Func{System.Boolean},System.Int32,System.Int32)">
             <summary>
             等待到条件成立或超时

BIN
Wfj/GsProxy/AntiXssLibrary.dll


BIN
Wfj/GsProxy/Apq.Web5.dll


BIN
Wfj/GsProxy/Apq.Web5.pdb


+ 106 - 53
Wfj/GsProxy/Apq.Web5.xml

@@ -9,42 +9,76 @@
             Http请求扩展
             </summary>
         </member>
-        <member name="M:Apq.Extension.Ext_HttpContext.GetPostString(Microsoft.AspNetCore.Http.HttpRequest,System.Text.Encoding)">
+        <member name="M:Apq.Extension.Ext_HttpContext.ContentTypeCharset">
+            <remarks>
+            Pattern:<br/>
+            <code>charset="?([a-zA-Z0-9_-]+)</code><br/>
+            Explanation:<br/>
+            <code>
+            ○ Match the string "charset=".<br/>
+            ○ Match '"' atomically, optionally.<br/>
+            ○ 1st capture group.<br/>
+                ○ Match a character in the set [-0-9A-Z_a-z] atomically at least once.<br/>
+            </code>
+            </remarks>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetFormEncoding(Microsoft.AspNetCore.Http.HttpRequest)">
+            <summary>
+            获取Form的编码(默认UTF8)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetFormEncoding(System.Net.Http.HttpRequestMessage)">
+            <summary>
+            获取Form的编码(默认UTF8)
+            </summary>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetPostString(Microsoft.AspNetCore.Http.HttpRequest)">
             <summary>
             获取POST提交过来的内容
             </summary>
             <param name="me"></param>
-            <param name="encoding">指定编码,默认UTF8</param>
         </member>
-        <member name="M:Apq.Extension.Ext_HttpContext.GetParams(Microsoft.AspNetCore.Http.HttpRequest,System.Boolean,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})">
+        <member name="M:Apq.Extension.Ext_HttpContext.GetParamsInBody(Microsoft.AspNetCore.Http.HttpRequest,System.Func{System.String,System.Text.Encoding,System.String})">
+            <summary>
+            获取Body中的参数列表(POST)
+            </summary>
+            <param name="me"></param>
+            <param name="encodeFormUrlEncoded">提供编码或解码算法(仅用于application/x-www-form-urlencoded)。默认无</param>
+        </member>
+        <member name="M:Apq.Extension.Ext_HttpContext.GetParams(Microsoft.AspNetCore.Http.HttpRequest,System.Boolean,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Func{System.String,System.Text.Encoding,System.String})">
             <summary>
             获取参数列表(POST/GET)
             </summary>
             <param name="me"></param>
             <param name="PostFirst">是:优先获取POST参数;否:优先获取GET参数</param>
-            <param name="encoding">从url提取参数时采用的编码</param>
-            <param name="encodeFunc">从url提取参数时的编码算法,也可以是解码算法。默认使用WebUtility.UrlDecode</param>
+            <param name="encoding">从Query中提取参数时采用的编码</param>
+            <param name="encodeQuery">提供编码或解码算法。默认无</param>
+            <param name="encodeForm">提供编码或解码算法。默认无</param>
         </member>
-        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedQuery(Microsoft.AspNetCore.Http.HttpRequest)">
+        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedQuery(Microsoft.AspNetCore.Http.HttpRequest,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})">
             <summary>
             获取已排序的参数列表(GET)
             </summary>
             <param name="me"></param>
+            <param name="encoding">从Query中提取参数时采用的编码</param>
+            <param name="encodeQuery">提供编码或解码算法。默认无</param>
         </member>
-        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedForm(Microsoft.AspNetCore.Http.HttpRequest)">
+        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedForm(Microsoft.AspNetCore.Http.HttpRequest,System.Func{System.String,System.Text.Encoding,System.String})">
             <summary>
             获取已排序的参数列表(POST)
             </summary>
             <param name="me"></param>
+            <param name="encodeForm">提供编码或解码算法。默认无</param>
         </member>
-        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedParams(Microsoft.AspNetCore.Http.HttpRequest,System.Boolean,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String})">
+        <member name="M:Apq.Extension.Ext_HttpContext.GetSortedParams(Microsoft.AspNetCore.Http.HttpRequest,System.Boolean,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Func{System.String,System.Text.Encoding,System.String})">
             <summary>
             获取已排序的参数列表(POST/GET)
             </summary>
             <param name="me"></param>
             <param name="PostFirst">是:优先获取POST参数;否:优先获取GET参数</param>
-            <param name="encoding">从url提取参数时采用的编码</param>
-            <param name="encodeFunc">从url提取参数时的编码算法,也可以是解码算法。默认使用WebUtility.UrlDecode</param>
+            <param name="encoding">从Query中提取参数时采用的编码</param>
+            <param name="encodeQuery">提供编码或解码算法。默认无</param>
+            <param name="encodeForm">提供编码或解码算法。默认无</param>
         </member>
         <member name="M:Apq.Extension.Ext_HttpContext.GetParamValue``1(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}},System.String)">
             <summary>
@@ -55,16 +89,13 @@
             <param name="key">参数名称</param>
             <returns>参数值,是否获取成功</returns>
         </member>
-        <member name="M:Apq.Extension.Ext_HttpContext.GetParams(System.Net.Http.HttpRequestMessage,System.Boolean)">
+        <member name="M:Apq.Extension.Ext_HttpContext.GetParams(System.Net.Http.HttpRequestMessage,System.Boolean,System.Text.Encoding,System.Func{System.String,System.Text.Encoding,System.String},System.Func{System.String,System.Text.Encoding,System.String})">
             <summary>
             获取参数列表(POST/GET)
             </summary>
             <param name="PostFirst">是:优先获取POST参数;否:优先获取GET参数</param>
-        </member>
-        <member name="M:Apq.Extension.Ext_HttpContext.ToQueryString(System.Collections.Generic.Dictionary{System.String,System.String},System.Text.Encoding)">
-            <summary>
-            转为QueryString,如果不为空,则以?开头
-            </summary>
+            <param name="encodeQuery">提供编码或解码算法。默认无</param>
+            <param name="encodeForm">提供编码或解码算法。默认无</param>
         </member>
         <member name="T:Apq.Web5.Filters.CallLogFilterAttribute">
             <summary>
@@ -78,7 +109,7 @@
         </member>
         <member name="T:Apq.Web5.Filters.WebParamsFilterAttribute">
             <summary>
-            参数值绑定支持Form中的参数,如果Form中有值则取Form中的值
+            参数值绑定支持Body中传入的参数(覆盖QueryString中的同名参数)
             </summary>
         </member>
         <member name="T:Apq.Web5.JsonReturn.JsonRtn`1">
@@ -97,67 +128,89 @@
             服务器是否执行成功(注意:有时也用于业务结果)
             </summary>
         </member>
-        <member name="P:Apq.Web5.JsonReturn.JsonRtnBase.Message">
+        <member name="P:Apq.Web5.JsonReturn.JsonRtnBase.StatusCode">
             <summary>
-            信息(执行成功的信息 或 执行失败的信息)
+            状态码
             </summary>
         </member>
-        <member name="T:Apq.Web5.JsonReturn.JsonRtnEasyuiTable`1">
+        <member name="P:Apq.Web5.JsonReturn.JsonRtnBase.Message">
             <summary>
-            Json返回结构:符合easyui格式的表格
+            信息(执行成功或失败的相关描述)
             </summary>
-            <typeparam name="T"></typeparam>
         </member>
-        <member name="T:Apq.Web5.PlAccessor.PHP.QueryStringBuilder">
+        <member name="T:Apq.Web5.JsonReturn.JsonTableRtn`1">
             <summary>
-             Helps up build a query string by converting an object into a set of named-values and making a query string out of it.
+            Json表返回结构:符合easyUI格式的表格
             </summary>
         </member>
-        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.BuildQueryString(System.Object,System.String)">
+        <member name="P:Apq.Web5.JsonReturn.JsonTableRtn`1.total">
             <summary>
-            Builds the query string from the given instance.
+            总行数
             </summary>
         </member>
-        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.GetUriString(System.String)">
+        <member name="P:Apq.Web5.JsonReturn.JsonTableRtn`1.rows">
             <summary>
-            Convert the key-value pairs that we've collected into an actual query string.
+            当前页的行集
             </summary>
         </member>
-        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.AddEntry(System.String,System.Object,System.Boolean)">
+        <member name="T:Apq.Web5.ReqParam.PagerParams">
             <summary>
-            Adds a single entry to the collection.
+            easyUI的分页参数
             </summary>
-            <param name="prefix"> The prefix to use when generating the key of the entry. Can be null. </param>
-            <param name="instance"> The instance to add.
-             
-             - If the instance is a dictionary, the entries determine the key and values.
-             - If the instance is a collection, the keys will be the index of the entries, and the value
-             will be each item in the collection.
-             - If allowObjects is true, then the object's properties' names will be the keys, and the
-             values of the properties will be the values.
-             - Otherwise the instance is added with the given prefix to the collection of items. </param>
-            <param name="allowObjects"> true to add the properties of the given instance (if the object is
-             not a collection or dictionary), false to add the object as a key-value pair. </param>
         </member>
-        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.Add(System.String,System.Collections.Generic.IEnumerable{Apq.Web5.PlAccessor.PHP.QueryStringBuilder.Entry})">
+        <member name="P:Apq.Web5.ReqParam.PagerParams.pageNumber">
             <summary>
-            Adds the given collection of entries.
+            第几页(1开始)
             </summary>
         </member>
-        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.GetObjectAdapter(System.Object)">
+        <member name="P:Apq.Web5.ReqParam.PagerParams.pageSize">
             <summary>
-             Returns a collection of entries that represent the properties on the object.
+            每页行数
             </summary>
         </member>
-        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.GetArrayAdapter(System.Collections.IEnumerable)">
-            <summary>
-             Returns a collection of entries that represent items in the collection.
-            </summary>
+        <member name="T:System.Text.RegularExpressions.Generated.ContentTypeCharset_0">
+            <summary>Custom <see cref="T:System.Text.RegularExpressions.Regex"/>-derived type for the ContentTypeCharset method.</summary>
         </member>
-        <member name="M:Apq.Web5.PlAccessor.PHP.QueryStringBuilder.GetDictionaryAdapter(System.Collections.IDictionary)">
-            <summary>
-             Returns a collection of entries that represent items in the dictionary.
-            </summary>
+        <member name="F:System.Text.RegularExpressions.Generated.ContentTypeCharset_0.Instance">
+            <summary>Cached, thread-safe singleton instance.</summary>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.ContentTypeCharset_0.#ctor">
+            <summary>Initializes the instance.</summary>
+        </member>
+        <member name="T:System.Text.RegularExpressions.Generated.ContentTypeCharset_0.RunnerFactory">
+            <summary>Provides a factory for creating <see cref="T:System.Text.RegularExpressions.RegexRunner"/> instances to be used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.ContentTypeCharset_0.RunnerFactory.CreateInstance">
+            <summary>Creates an instance of a <see cref="T:System.Text.RegularExpressions.RegexRunner"/> used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
+        </member>
+        <member name="T:System.Text.RegularExpressions.Generated.ContentTypeCharset_0.RunnerFactory.Runner">
+            <summary>Provides the runner that contains the custom logic implementing the specified regular expression.</summary>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.ContentTypeCharset_0.RunnerFactory.Runner.Scan(System.ReadOnlySpan{System.Char})">
+            <summary>Scan the <paramref name="inputSpan"/> starting from base.runtextstart for the next match.</summary>
+            <param name="inputSpan">The text being scanned by the regular expression.</param>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.ContentTypeCharset_0.RunnerFactory.Runner.TryFindNextPossibleStartingPosition(System.ReadOnlySpan{System.Char})">
+            <summary>Search <paramref name="inputSpan"/> starting from base.runtextpos for the next location a match could possibly start.</summary>
+            <param name="inputSpan">The text being scanned by the regular expression.</param>
+            <returns>true if a possible match was found; false if no more matches are possible.</returns>
+        </member>
+        <member name="M:System.Text.RegularExpressions.Generated.ContentTypeCharset_0.RunnerFactory.Runner.TryMatchAtCurrentPosition(System.ReadOnlySpan{System.Char})">
+            <summary>Determine whether <paramref name="inputSpan"/> at base.runtextpos is a match for the regular expression.</summary>
+            <param name="inputSpan">The text being scanned by the regular expression.</param>
+            <returns>true if the regular expression matches at the current position; otherwise, false.</returns>
+        </member>
+        <member name="T:System.Text.RegularExpressions.Generated.Utilities">
+            <summary>Helper methods used by generated <see cref="T:System.Text.RegularExpressions.Regex"/>-derived implementations.</summary>
+        </member>
+        <member name="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout">
+            <summary>Default timeout value set in <see cref="T:System.AppContext"/>, or <see cref="F:System.Text.RegularExpressions.Regex.InfiniteMatchTimeout"/> if none was set.</summary>
+        </member>
+        <member name="F:System.Text.RegularExpressions.Generated.Utilities.s_hasTimeout">
+            <summary>Whether <see cref="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout"/> is non-infinite.</summary>
+        </member>
+        <member name="F:System.Text.RegularExpressions.Generated.Utilities.s_ascii_20FF03FEFFFF87FEFFFF07">
+            <summary>Supports searching for characters in or not in "-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".</summary>
         </member>
     </members>
 </doc>

BIN
Wfj/GsProxy/Apq.dll


BIN
Wfj/GsProxy/Apq.pdb


Fișier diff suprimat deoarece este prea mare
+ 690 - 108
Wfj/GsProxy/Apq.xml


BIN
Wfj/GsProxy/ConsoleTables.dll


+ 10 - 4
Wfj/GsProxy/DefaultConfig/AppConfig.json

@@ -3,18 +3,22 @@
 	"PathBase": "/GsProxy",
 	// 加载dll时查找哪些文件夹(相对路径,起点是程序所在目录)
 	"ProbeDirs": null,
+	"FixedThreadTaskScheduler": {
+		// 设定默认的自定义线程池的线程数(后台线程数) (建议仅用于可延迟执行的长时任务)
+		"ThreadCount": 30
+	},
 	"FleckWebSocketServer": {
 		// 客户端最大空闲时长(秒),超过则视为断开。一般取 >(2 * 客户端心跳间隔时长[推荐为5])
-		"Timeout_Idle": 15
+		"Timeout_Idle": 30
 	},
 	// 连接到服务器
 	"PersistentClient": {
 		// 单次连接的超时时长(秒)(局域网或本机环境,5秒就够长了)
 		"ConnectTimeout": 5,
 		// 心跳检测的间隔时长(秒)
-		"Interval_HeartBeat": 6,
+		"Interval_HeartBeat": 15,
 		// 最大空闲时长(秒),超过则视为断开。一般取 >(2 * Interval_HeartBeat)
-		"Timeout_Idle": 15
+		"Timeout_Idle": 30
 	},
 	"TcpClient": {
 		// 单次发送的最大容量(KB),默认是8
@@ -25,5 +29,7 @@
 	"ActorMgr": {
 		// 连接关闭后延时移除(秒)(防止角色在服务器上重复登录)
 		"DelayRemoveAfterClose": 6
-	}
+	},
+	// 日志上报接口地址(结尾不加/)
+	"LogReport": "https://zl-wsr.0037wan.com/charge62"
 }

+ 2 - 2
Wfj/GsProxy/DefaultConfig/log4net.config

@@ -11,7 +11,7 @@
 			<!--使用utf-8编码-->
 			<encoding value="utf-8" />
 			<!--日志文件目录-->
-			<param name= "File" value= "../logs/GsProxy/"/>
+			<param name= "File" value= "logs/"/>
 			<!--是否是向文件中追加日志-->
 			<param name= "AppendToFile" value= "true"/>
 			<!--log保留天数(-1则为全保留)-->
@@ -29,7 +29,7 @@
 		<appender name="EFRollingFileAppender" type="log4net.Appender.RollingFileAppender">
 			<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 			<param name="Encoding" value="utf-8" />
-			<param name= "File" value= "../logs/GsProxy/"/>
+			<param name= "File" value= "logs/"/>
 			<param name= "AppendToFile" value= "true"/>
 			<param name= "MaxSizeRollBackups" value= "30"/>
 			<param name= "StaticLogFileName" value= "false"/>

+ 3 - 3
Wfj/GsProxy/DockerBuild.txt

@@ -17,9 +17,9 @@ cd ApqPublish/GsProxy/
 docker login [email protected] registry.cn-guangzhou.aliyuncs.com
 
 # amd64上
-docker rmi registry.cn-guangzhou.aliyuncs.com/apq/gsproxy:amd64_20240327
-docker build -t registry.cn-guangzhou.aliyuncs.com/apq/gsproxy:amd64_20240327 .
-docker push registry.cn-guangzhou.aliyuncs.com/apq/gsproxy:amd64_20240327
+docker rmi registry.cn-guangzhou.aliyuncs.com/apq/gsproxy:amd64_20250306
+docker build -t registry.cn-guangzhou.aliyuncs.com/apq/gsproxy:amd64_20250306 .
+docker push registry.cn-guangzhou.aliyuncs.com/apq/gsproxy:amd64_20250306
 
 # arm64上
 docker rmi registry.cn-guangzhou.aliyuncs.com/apq/gsproxy:arm64

+ 1 - 2
Wfj/GsProxy/Dockerfile

@@ -1,8 +1,7 @@
 FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
 USER app
 WORKDIR /app
-EXPOSE 45902
-EXPOSE 45901
+EXPOSE 45800
 COPY . .
 RUN mkdir logs && chmod 777 logs
 VOLUME ["/app/logs","/app/Config"]

BIN
Wfj/GsProxy/Google.Protobuf.dll


BIN
Wfj/GsProxy/Grpc.AspNetCore.Server.ClientFactory.dll


BIN
Wfj/GsProxy/Grpc.AspNetCore.Server.Reflection.dll


BIN
Wfj/GsProxy/Grpc.AspNetCore.Server.dll


BIN
Wfj/GsProxy/Grpc.AspNetCore.Web.dll


BIN
Wfj/GsProxy/Grpc.Core.Api.dll


BIN
Wfj/GsProxy/Grpc.Net.Client.dll


BIN
Wfj/GsProxy/Grpc.Net.ClientFactory.dll


BIN
Wfj/GsProxy/Grpc.Net.Common.dll


BIN
Wfj/GsProxy/Grpc.Reflection.dll


Fișier diff suprimat deoarece este prea mare
+ 524 - 191
Wfj/GsProxy/GsProxy.deps.json


BIN
Wfj/GsProxy/GsProxy.dll


BIN
Wfj/GsProxy/GsProxy.exe


BIN
Wfj/GsProxy/GsProxy.pdb


BIN
Wfj/GsProxy/Microsoft.Bcl.Cryptography.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.Configuration.Abstractions.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.Configuration.FileExtensions.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.Configuration.Json.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.Configuration.Xml.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.Configuration.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.DependencyInjection.Abstractions.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.FileProviders.Abstractions.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.FileProviders.Physical.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.FileSystemGlobbing.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.Logging.Abstractions.dll


BIN
Wfj/GsProxy/Microsoft.Extensions.Primitives.dll


BIN
Wfj/GsProxy/Microsoft.Security.Application.HtmlSanitization.dll


BIN
Wfj/GsProxy/System.Configuration.ConfigurationManager.dll


BIN
Wfj/GsProxy/System.Diagnostics.DiagnosticSource.dll


BIN
Wfj/GsProxy/System.Diagnostics.EventLog.dll


BIN
Wfj/GsProxy/System.Formats.Asn1.dll


BIN
Wfj/GsProxy/System.IO.Pipelines.dll


BIN
Wfj/GsProxy/System.Security.Cryptography.Pkcs.dll


BIN
Wfj/GsProxy/System.Security.Cryptography.ProtectedData.dll


BIN
Wfj/GsProxy/System.Security.Cryptography.Xml.dll


BIN
Wfj/GsProxy/System.Security.Permissions.dll


BIN
Wfj/GsProxy/System.Text.Encodings.Web.dll


BIN
Wfj/GsProxy/System.Text.Json.dll


BIN
Wfj/GsProxy/Wcwidth.dll


BIN
Wfj/GsProxy/log4net.dll


BIN
Wfj/GsProxy/protobuf-net.Core.dll


BIN
Wfj/GsProxy/protobuf-net.dll


BIN
Wfj/GsProxy/runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll


BIN
Wfj/GsProxy/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll


BIN
Wfj/GsProxy/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll


BIN
Wfj/GsProxy/runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll


BIN
Wfj/GsProxy/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff