- **新特性**
- [新增] 定时任务支持是否显示空触发器作业 `DisplayEmptyTriggerJobs` 和是否显示页头 `DisplayHead` <sup>4.9.2.39</sup> <sup>⏱️2024.05.07</sup> [f64d45f](https://gitee.com/dotnetchina/Furion/commit/f64d45f658f1fca22cc624dfaa324e124b490fdd)
- [新增] 定时任务支持取消指定触发器正在执行的作业程序 <sup>4.9.2.38</sup> <sup>⏱️2024.05.07</sup> [5aa20b5](https://gitee.com/dotnetchina/Furion/commit/5aa20b583f1d2c11fe5ebce069e78985e7fb7ff5)
- [新增] 粘土对象 `Clay` 转换为可枚举对象 `AsEnumerable()` 方法 <sup>4.9.2.37</sup> <sup>⏱️2024.05.06</sup> [b1c8fa4](https://gitee.com/dotnetchina/Furion/commit/b1c8fa4d3b4a46b22a97f3ef566bb927ee8cbd5f)
- [新增] 远程请求支持返回 `HttpResponseModel<T>` 类型,包含 `HttpResponseMessage`、返回值等属性 <sup>4.9.2.34</sup> <sup>⏱️2024.04.30</sup> [42ccdaa](https://gitee.com/dotnetchina/Furion/commit/42ccdaa6cb1dcd3381ee8788d254bcb2f99acc69)
- [新增] 定时任务作业计划支持根据触发器 `Id` 集合做批量删除操作 <sup>4.9.2.33</sup> <sup>⏱️2024.04.30</sup> [d01a6e7](https://gitee.com/dotnetchina/Furion/commit/d01a6e7ee42e197f78b054e360c34b337fe3d902)
- [新增] 动态 `WebAPI` 支持配置基元类型和字符串类型默认绑定信息 <sup>4.9.2.32</sup> <sup>⏱️2024.04.28</sup> [d7e7a02](https://gitee.com/dotnetchina/Furion/commit/d7e7a027153ed2fa68ee1ee571d568954a9564e8)
- [新增] 支持检查作业信息额外数据的键是否定义 `ContainsProperty(key)` 方法 <sup>4.9.2.32</sup> <sup>⏱️2024.04.28</sup> [71f97f0](https://gitee.com/dotnetchina/Furion/commit/71f97f0304c5d5048b09c87d9d2928be8ff9dc86)
- [新增] 日志模块 `MessageProcess` 配置,可对日志消息进行额外处理,如敏感内容脱敏 <sup>4.9.2.32</sup> <sup>⏱️2024.04.28</sup> [0d9ff5e](https://gitee.com/dotnetchina/Furion/commit/0d9ff5e938b21acd958902c288e629c7c89273c9)
- [新增] 定时任务支持配置作业触发器 `RunOnStart` 的处理逻辑 `options.RunOnStartProvider` <sup>4.9.2.29</sup> <sup>⏱️2024.04.23</sup> [c9e0e3e](https://gitee.com/dotnetchina/Furion/commit/c9e0e3eb0bde08cb6e12a4ae0cbf834f70e44768)
- [新增] `EFCore` 批量更新支持设置 `includePropertyNames` 和 `excludePropertyNames` 参数 <sup>4.9.2.28</sup> <sup>⏱️2024.04.23</sup> [c9926cc](https://gitee.com/dotnetchina/Furion/commit/c9926ccb6434316338816eaf259ae9191f40505e)
- [新增] 远程请求代理模式支持 `[BaseAddress]` 特性快速设置 `HttpClient` 客户端 `BaseAddress` <sup>4.9.2.25</sup> <sup>⏱️2024.04.19</sup> [ea88c95](https://gitee.com/dotnetchina/Furion/commit/ea88c95eeca855a0692a7516a72f8b10b3e47637)
- [新增] 粘土对象进行固化类型时支持 `JsonSerializerOptions` 序列化配置 <sup>4.9.2.24</sup> <sup>⏱️2024.04.17</sup> [cc6dd13](https://gitee.com/dotnetchina/Furion/commit/cc6dd133a6e8f9ab03bf37b0011449e7f798bddd)
- [新增] 动态 `WebAPI` 支持贴 `[Route]` 特性动态生成控制器 <sup>4.9.2.19</sup> <sup>⏱️2024.04.16</sup> [#I9H1QH](https://gitee.com/dotnetchina/Furion/issues/I9H1QH)
- [新增] 粘土对象支持无限极组合嵌套功能 <sup>4.9.2.19</sup> <sup>⏱️2024.04.16</sup> [b02916e](https://gitee.com/dotnetchina/Furion/commit/b02916e3397e07328f6d31c301034af004e37067)
- [新增] `AES` 加解密支持向量 `IV`、模式 `Mode` 和填充 `Padding` 配置 <sup>4.9.2.18</sup> <sup>⏱️2024.04.15</sup> [d549bba](https://gitee.com/dotnetchina/Furion/commit/d549bba917114a57441cd3fc80795340131f3dcf)
- [新增] 定时任务作业计划工厂 `ISchedulerFactory` 启停作业 `StartJob` 和 `PauseJob` 方法 <sup>4.9.2.16</sup> <sup>⏱️2024.04.11</sup> [89061ef](https://gitee.com/dotnetchina/Furion/commit/89061ef4679378dd76e162323927f7654a5e1390)
- [新增] `AppSettings` 拓展程序集 `ExternalAssemblies` 配置支持目录扫描 <sup>4.9.2.14</sup> <sup>⏱️2024.04.10</sup> [e68f0a6](https://gitee.com/dotnetchina/Furion/commit/e68f0a665eb1cb745016d993516b4935d4ae932c)
- [新增] 定时任务批量设置作业组名称 `.GroupSet` 方法 <sup>4.9.2.9</sup> <sup>⏱️2024.04.09</sup> [9e08278](https://gitee.com/dotnetchina/Furion/commit/9e08278e95ba0ec98a3ffaeb54c46b598d7d6c81)
- [新增] 控制器/动态 `WebAPI` 方法添加 `[DisplayName]` 特性生成 `Swagger` 文档注释 <sup>4.9.2.3</sup> <sup>⏱️2024.03.30</sup> [0f24c66](https://gitee.com/dotnetchina/Furion/commit/0f24c66cfea3b0484aea97f2659f81a873324e0a)
- [新增] 远程请求且出现异常时输出重试日志 <sup>4.9.2.1</sup> <sup>⏱️2024.03.29</sup> [e4549eb](https://gitee.com/dotnetchina/Furion/commit/e4549eb6f37b5f5036c69952d1df2284e8e33417)
- [新增] 定时任务启动时检查不合法的作业触发器配置并打印警告日志 <sup>4.9.2</sup> <sup>⏱️2024.03.28</sup> [3190f4c](https://gitee.com/dotnetchina/Furion/commit/3190f4c705bf7fb84b210e1239254626253c9e94)
- **突破性变化**
- [调整] 定时任务作业执行上下文 `RunId` 类型,由 `Guid` 改为 `string` 类型 <sup>4.9.2.38</sup> <sup>⏱️2024.05.07</sup> [5aa20b5](https://gitee.com/dotnetchina/Furion/commit/5aa20b583f1d2c11fe5ebce069e78985e7fb7ff5)
- [调整] `Swagger` 文档注释逻辑,将 `///` 注释方式优先级调整至最高,可覆盖 `[DisplayName]` 特性方式 <sup>4.9.2.17</sup> <sup>⏱️2024.04.14</sup> [ba5249c](https://gitee.com/dotnetchina/Furion/commit/ba5249c2617b5740c79c67fa3e452e9e28a6ea61)
- [调整] 定时任务作业计划工厂 `TryRunJob` 方法签名,追加 `out IScheduler scheduler` 参数 <sup>4.9.2.16</sup> <sup>⏱️2024.04.11</sup> [89061ef](https://gitee.com/dotnetchina/Furion/commit/89061ef4679378dd76e162323927f7654a5e1390)
- **问题修复**
- [修复] 模板引擎不支持将粘土对象或 `DynamicObject` 派生类类型设置为模板数据 <sup>4.9.2.36</sup> <sup>⏱️2024.05.05</sup> [07ee172](https://gitee.com/dotnetchina/Furion/commit/07ee1720b48a6dcd1a91be67c1ad7d34d99df83c)
- [修复] 启动时输出控制台日志配置 `options.MessageProcess` 无效问题 <sup>4.9.2.36</sup> <sup>⏱️2024.05.05</sup> [b5cb0fe](https://gitee.com/dotnetchina/Furion/commit/b5cb0fef937a74b6ee2a451d7b66ceab8e11dd49)
- [修复] 远程请求 `HttpResponseModel<T>` 不支持重复读 `Response.Content` 流问题 <sup>4.9.2.35</sup> <sup>⏱️2024.04.30</sup> [7ca0650](https://gitee.com/dotnetchina/Furion/commit/7ca0650ef62bde041f6747ccc5b3699251dac465)
- [修复] 审计日志 `Monitor` 捕获异常时因其 `StackTrace` 堆栈信息可能为 `null` 引发的空异常问题 <sup>4.9.2.31</sup> <sup>⏱️2024.04.25</sup> [@xjj_0906](https://gitee.com/xjj_0906) [!875](https://gitee.com/dotnetchina/Furion/pulls/875) [7621e75](https://gitee.com/dotnetchina/Furion/commit/7621e75a90f3f9301c861bb5331ada3d9014790a)
- [修复] 定时任务间隔触发器获取下一周期时间缺少了 `RunOnStart` 和 `StartTime` 考虑场景 <sup>4.9.2.30</sup> <sup>⏱️2024.04.23</sup> [2595379](https://gitee.com/dotnetchina/Furion/commit/2595379666f980a8fd29f4322c352406ff4a48c1) [7ac6a54](https://gitee.com/dotnetchina/Furion/commit/7ac6a5486098964a740be9626e5431c5b7b07a9b)
- [修复] 定时任务看板作业触发器类型文字过多出现超出布局情况 <sup>4.9.2.29</sup> <sup>⏱️2024.04.23</sup> [f9dd33b](https://gitee.com/dotnetchina/Furion/commit/f9dd33bf5d45df1b110548a744099f9f0e960e07)
- [修复] 文件日志在一些特定情况下出现 `The stream writer is currently in use by a previous write operation.` 异常 <sup>4.9.2.27</sup> <sup>⏱️2024.04.22</sup> [3ca012b](https://gitee.com/dotnetchina/Furion/commit/3ca012bdf2cd6ccd95efff9dc8a5108f3d2c6c02)
- [修复] 定时任务毫秒级间隔触发器存在严重的误差问题 <sup>4.9.2.26</sup> <sup>⏱️2024.04.22</sup> [9c8210c](https://gitee.com/dotnetchina/Furion/commit/9c8210c2d3b56bd19eaf08147b031742349e28b2)
- [修复] 定时任务创建作业处理程序存在内存溢出风险 <sup>4.9.2.25</sup> <sup>⏱️2024.04.19</sup> [#I9D0RH](https://gitee.com/dotnetchina/Furion/issues/I9D0RH)
- [修复] 动态 `WebAPI` 不支持 `[BindNever]` 特性忽略路由和 `Action` 参数设置 <sup>4.9.2.25</sup> <sup>⏱️2024.04.19</sup> [21599e6](https://gitee.com/dotnetchina/Furion/commit/21599e6932467a3dac891bf2a116309e7a93d2e7)
- [修复] 审计日志 `Monitor` 不支持粘土对象 `Clay/dynamic` 类型格式化输出 <sup>4.9.2.24</sup> <sup>⏱️2024.04.17</sup> [d578cfb](https://gitee.com/dotnetchina/Furion/commit/d578cfb553e5a5013b77bae617d5e94daf299acb)
- [修复] 粘土对象无限嵌套粘土对象且 `XElement` 属性包含 `type="null"` 节点出现异常问题 <sup>4.9.2.21</sup> <sup>⏱️2024.04.16</sup> [9d5870f](https://gitee.com/dotnetchina/Furion/commit/9d5870f7eeff129f01b6214120ef4ff26471833e)
- [修复] 粘土对象嵌套粘土对象只输出第一个属性问题 <sup>4.9.2.20</sup> <sup>⏱️2024.04.16</sup> [1a75778](https://gitee.com/dotnetchina/Furion/commit/1a7577810e3e5b5ffa179600ce60a466741487dc)
- [修复] 动态 `WebAPI` 错误将 `CancellationToken` 类型当作路由参数 <sup>4.9.2.19</sup> <sup>⏱️2024.04.16</sup> [#I9H14X](https://gitee.com/dotnetchina/Furion/issues/I9H14X)
- [修复] 定时任务因新增 `GroupSet` 功能影响到了原有的 `SetGroupName` 逻辑 <sup>4.9.2.15</sup> <sup>⏱️2024.04.11</sup> [#I9FOU0](https://gitee.com/dotnetchina/Furion/issues/I9FOU0) [9e08278](https://gitee.com/dotnetchina/Furion/commit/9e08278e95ba0ec98a3ffaeb54c46b598d7d6c81)
- [修复] 定时任务生成 `PostgreSQL` 数据库 `SQL` 语句的字段名缺少 `"` 双引号 <sup>4.9.2.13</sup> <sup>⏱️2024.04.10</sup> [#I9FD9Y](https://gitee.com/dotnetchina/Furion/issues/I9FD9Y)
- [修复] 定时任务使用 `JobBuilder` 构建委托作业永远无法执行问题 <sup>4.9.2.10</sup> <sup>⏱️2024.04.10</sup> [Sundial#I7KU7K](https://gitee.com/dotnetchina/Sundial/issues/I7KU7K)
- [修复] 规范化结果在未启用 `401/403` 等状态码中间件时进行了错误拦截 <sup>4.9.2.8</sup> <sup>⏱️2024.04.08</sup> [b135e8c](https://gitee.com/dotnetchina/Furion/commit/b135e8c8acb002273cce20798f49a7e95fa76025)
- [修复] 客户端设置 `JWT Token` 时如果 `Bearer` 后面跟多个空格导致验证失败问题 <sup>4.9.2.8</sup> <sup>⏱️2024.04.08</sup> [@xuejf168](https://gitee.com/xuejf168) [!874](https://gitee.com/dotnetchina/Furion/pulls/874)
- [修复] `SQL` 查询结果转模型不支持 `DateOnly` 和 `TimeOnly` 属性类型 <sup>4.9.2.7</sup> <sup>⏱️2024.04.04</sup> [31f9d23](https://gitee.com/dotnetchina/Furion/commit/31f9d23c430b531c78e848ab62476f3fbac73dfd)
- [修复] 粘土对象调整原先类型并设置混合类型异常问题 <sup>4.9.2.6</sup> <sup>⏱️2024.04.03</sup> [83b216f](https://gitee.com/dotnetchina/Furion/commit/83b216f11fa2bcbc12e7186b57d149f7611d1cd1)
- [修复] 粘土对象将 `Object` 类型设置给 `Array` 类型出现递归死循环问题 <sup>4.9.2.5</sup> <sup>⏱️2024.04.03</sup> [1126c74](https://gitee.com/dotnetchina/Furion/commit/1126c740f73f2a8083c7be4e35fafafef71ad5db)
- [修复] 粘土对象不支持嵌套粘土对象问题 <sup>4.9.2.4</sup> <sup>⏱️2024.04.02</sup> [fcb1223](https://gitee.com/dotnetchina/Furion/commit/fcb1223978d0125292be17475c5ec06af2081f97)
- [修复] 粘土对象序列化后出现二次序列化成字符串问题 <sup>4.9.2.4</sup> <sup>⏱️2024.04.02</sup> [fcb1223](https://gitee.com/dotnetchina/Furion/commit/fcb1223978d0125292be17475c5ec06af2081f97)
- [修复] 在 `.NET8` 之后修改 `System.Text.Json` 默认序列化选项引发 `This JsonSerializerOptions instance is read-only or has already been used in serialization or deserialization.` 异常问题 <sup>4.9.2.2</sup> <sup>⏱️2024.03.29</sup> [9f44653](https://gitee.com/dotnetchina/Furion/commit/9f446535e054ff6c5fdb750a96b1c65a6ac27411)
- [修复] 远程请求 `IHttpDispatchProxy` 模式配置重试策略无效 <sup>4.9.2.1</sup> <sup>⏱️2024.03.29</sup> [#I9CK7X](https://gitee.com/dotnetchina/Furion/issues/I9CK7X)
- **其他更改**
- [调整] `IPC` 管道消息消费方式由无序改为有序 <sup>4.9.2.33</sup> <sup>⏱️2024.04.30</sup> [ce59c3a](https://gitee.com/dotnetchina/Furion/commit/ce59c3a831410752ffa1f987deaa4f68eb18a46b)
- [调整] 默认 `System.Text.Json` 序列化提供器选项为不区分大小写匹配 <sup>4.9.2.1</sup> <sup>⏱️2024.03.29</sup> [b58e7be](https://gitee.com/dotnetchina/Furion/commit/b58e7beda68d70ce829fac77fc378a407d8c44e8)
- **文档**
- [更新] 事件总线文档、定时任务文档、规范化接口文档、远程请求文档、粘土对象文档、`FS` 静态类文档、序列化文档、模块化文档、规范化文档、数据加解密文档、动态 `WebAPI` 文档、`IPC` 通信模块文档
- **贡献者**
- 简简安 ([@MadOneYou](https://gitee.com/MadOneYou)) [!876](https://gitee.com/dotnetchina/Furion/pulls/876) [!877](https://gitee.com/dotnetchina/Furion/pulls/877)
- 写意 ([@xjj_0906](https://gitee.com/xjj_0906)) [!875](https://gitee.com/dotnetchina/Furion/pulls/875)
- 薛金峰 ([@xuejf168](https://gitee.com/xuejf168)) [!874](https://gitee.com/dotnetchina/Furion/pulls/874)
- lindexi ([@lindexi](https://gitee.com/lindexi)) [!873](https://gitee.com/dotnetchina/Furion/pulls/873)
---