8.7K Star 14.3K Fork 4.2K

GVPdotNET China/Furion

 / 详情

📝 发布 Furion v4.6.5 版本

已完成
拥有者
创建于  
2022-10-14 13:10

功能描述

发布 FurionFurion.ToolsFurion.Xunit v4.6.5 版本

包含以下功能更新:

功能清单

  • 新增 long 序列化丢精度的 JsonConvert 内置转换器,.AddLongTypeConverters() 4.6.5 #I5VJHC aded58d
  • 新增 app.EnableBuffering() 拓展,解决 Request.Body 不能重复读问题 4.6.5 aded58d
  • 移除 DateOnlyJsonConverterDateOnlyOffsetJsonConverter 处理 4.6.5 aded58d
  • 调整 .AddDateFormatString() 名称为 .AddDateTimeTypeConverters() 4.6.5 aded58d
  • 修复 .ToDictionary() 拓展不支持 JObject 类型问题 4.6.5 #I5VJHC a11bf8d
  • 修复 LoggingMonitor 处理 long 类型丢精度问题 4.6.5 #I5VJHC aded58d
  • 内置 Microsoft.AspNetCore.Mvc.NewtonsoftJson 拓展,原因是太多人使用了 4.6.5 aded58d
  • 升级 SqlSugar 拓展包和脚手架至 5.1.3.27 版本
  • 发布 v4.6.5 版本文档
  • 更新示例项目 samples 依赖至 v4.6.5 版本
  • Replit 网站 Furion 案例同步到 v4.6.5 版本
  • GiteeGithub 发布 Release-v4.6.5 版本
  • 同步更新日志

代码实现

https://gitee.com/dotnetchina/Furion/pulls/622

https://gitee.com/dotnetchina/Furion/commit/aded58d0bc587d1a1844382c66ec1ab3de96be7c

https://gitee.com/dotnetchina/Furion/commit/a11bf8d8b6bb90b41b8394d8bca35aa3539239e6

文档更新

  1. 内置 long 序列化丢精度处理

有时候我们需要将 long 类型序列化时转为 string 类型,防止 JavaScript 出现精度溢出问题,这个时候可以尝试使用以下方法解决:

  • System.Text.Json 方式
services.AddControllersWithViews()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.Converters.AddLongTypeConverters();
        });
  • Newtonsoft.Json 方式
.AddNewtonsoftJson(options =>
{
     options.SerializerSettings.Converters.AddLongTypeConverters();
})

  1. 关于 Dictionary<,> 类型包含 long 处理

默认情况下,System.Text.Json 不支持 Dictionary<,> 类型的序列化设置 Converter 操作,这个时候可以换成 Newtonsoft.Json 处理,如:

.AddNewtonsoftJson(options =>
{
    options.SerializerSettings.Converters.AddLongTypeConverters();
})

同时创建 NewtonsoftJsonSerializerProvider.cs 文件写入即可:

namespace YourProject.Core;

public class NewtonsoftJsonSerializerProvider : IJsonSerializerProvider, ISingleton
{
    public string Serialize(object value, object jsonSerializerOptions = null)
    {
        return JsonConvert.SerializeObject(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
    }

    public T Deserialize<T>(string json, object jsonSerializerOptions = null)
    {
        return JsonConvert.DeserializeObject<T>(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
    }

    public object GetSerializerOptions()
    {
        return App.GetOptions<MvcNewtonsoftJsonOptions>()?.SerializerSettings;
    }
}

评论 (5)

百小僧 创建了任务 3年前
百小僧 添加了
 
优化
标签
3年前
百小僧 添加了
 
新功能
标签
3年前
百小僧 添加了
 
重大调整
标签
3年前
百小僧 添加了
 
漏洞
标签
3年前
展开全部操作日志

这个版本新特性很多~

百小僧 修改了描述 3年前
百小僧 修改了描述 3年前
百小僧 通过合并 Pull Request !622: 发布 Furion v4.6.5 版本任务状态待办的 修改为已完成 3年前
百小僧 置顶等级 修改为不置顶 3年前

Furion v4.6.5 版本发布,诸多改进修复


  • 新特性

    • [新增] LoggingMonitor 支持 FileResult 类型监听 4.6.0 bf9c0b1
    • [新增] LogMessage 结构 UseUtcTimestamp 字段,解释日志记录时间格式是 UTC 还是 LOCAL 时间 4.6.1 aab0371
    • [新增] 事件总线模块重试失败后支持回调 4.6.1 #I5UVMV
    • [新增] LoggingMonitor 支持序列化忽略指定属性名或属性类型 4.6.1 81c6343
    • [新增] long 序列化丢精度的 JsonConvert 内置转换器,.AddLongTypeConverters() 4.6.5 #I5VJHC aded58d
    • [新增] app.EnableBuffering() 拓展,解决 Request.Body 不能重复读问题 4.6.5 aded58d
  • 突破性变化

    • [新增] 适配 .NET 6.0.10.NET 7 RC2 4.6.2 6bb2fad
    • [新增] 内置 Microsoft.AspNetCore.Mvc.NewtonsoftJson 拓展,原因是太多人使用了 4.6.5 aded58d
    • [移除] "some log".SetCategory(name) 拓展方法 4.6.0 ec4838c
    • [移除] DateOnlyJsonConverterDateOnlyOffsetJsonConverter 处理 4.6.5 aded58d
    • [调整] 事件总线触发处理程序的逻辑,由过去的 foreach 改为 Parallel.ForEach,吞吐量提升近 4 倍 4.6.4 7384c9c
    • [调整] .AddDateFormatString() 名称为 .AddDateTimeTypeConverters() 4.6.5 aded58d
    • [调整] 重构日志模块设置上下文数据功能 4.6.0 1c198ee
    • [移除] 远程请求 .SetTimeout[Timeout] 配置方法,采用全局统一配置 4.6.4 7384c9c
  • 问题修复

    • [修复] 4.5.9+ 版本新增的 IncludeScopes 配置导致日志上下文失效 4.6.0 4a76841
    • [修复] 多个 sql 共用 DbParameters 出现冲突问题 4.6.0 #I5UO2H
    • [修复] 高频率写入日志导致堆内存溢出的异常问题 4.6.0 #I5UJRS
    • [修复] 框架内部所有使用 .CreateLogger 创建的日志对象无法应用上下文问题 4.6.0 ec4838c
    • [修复] 修复远程请求不能在 Worker Serivce 中进行构造函数注入,原因是注册为 Scope 范围作用域 4.6.3 974f835
    • [修复] 个别服务器的 SQL Server 不支持 TLS 1.2 协议问题 4.6.3 974f835
    • [修复] .ToDictionary() 拓展不支持 JObject 类型问题 4.6.5 #I5VJHC a11bf8d
    • [修复] LoggingMonitor 处理 long 类型丢精度问题 4.6.5 #I5VJHC aded58d
  • 其他更改

    • [调整] LoggingMonitor 返回值类型是 泛型 时获取 FullName 带程序集签名问题 4.6.2 f0aaec6
    • [调整] 优化远程请求性能,添加复用池的机制,避免频繁销毁创建 4.6.4 7384c9c
  • 文档

    • [新增] 远程请求设置客户端生命周期配置文档和新超时配置文档
    • [新增] JSON 序列化处理 long 类型说明文档
    • [更新] 日志记录文档、事件总线文档、数据库入门文档、JSON 序列化文档、远程请求文档

Furion v4.6.5 版本最大的改变就是内置了 long 精度序列化处理了,因为这个需求越来越大了,所以干脆框架底层处理,以后出问题直接找 Furion 即可。

输入图片说明

好几个小伙伴反馈【赞助商广告】太占地方了,能不能关闭或者缩小。关闭是不能的,毕竟他们赞助了 Furion。

所以我们换一种方式,可以缩小:

输入图片说明

输入图片说明

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
974299 monksoul 1578937227
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助