首页 > 其他分享 >DOTNET MessagePack序列化/反序列化时不保留 DateTime.Kind

DOTNET MessagePack序列化/反序列化时不保留 DateTime.Kind

时间:2024-11-22 16:08:30浏览次数:1  
标签:Kind DateTime signalr DOTNET 序列化 MessagePack

最近又遇到个奇怪的问题,查询出来的时间比数据库中字段存的时间多8小时。
发现是用了efcore的二级缓存,本来用json序列化的,后来为了性能改成MessagePack,最后定位就是MessagePack序列化/反序列化时不保留 DateTime.Kind,导致从redis里拿到的数据中时间值+8小时了,试着写IMessagePackFormatter或者IFormatterResolver等都无法解决,只能先放弃二级缓存,或者后面还是改成Json了。
当然似乎服务器代码中全部用utc才是最佳做法,但是太多数据没法修改。
还看到微软的signalr文档也提醒了这个问题,但没有解决方案。
https://learn.microsoft.com/zh-cn/aspnet/core/signalr/messagepackhubprotocol?view=aspnetcore-8.0#datetimekind-is-not-preserved-when-serializingdeserializing

标签:Kind,DateTime,signalr,DOTNET,序列化,MessagePack
From: https://www.cnblogs.com/pains/p/18563081

相关文章

  • 【SqlServer】datetime存储精度问题探究
    最近使用sqlserver2012的时候注意到datetime类型的毫秒的精度是存在问题的,好奇是怎么回事,特意来研究一下问题复现如下的sql执行UPDATEAlarmItemSETcreate_time='2024-01-0100:00:00.000'Whereid=1;UPDATEAlarmItemSETcreate_time='2024-01-0100:00:00.001'Whe......
  • Java反序列化-Commons Collections4利用链详解
    前言CC4的构造方式与CC3相似,主要的区别在于触发反序列化的方式不同。CC4通过使用PriorityQueue(优先队列)来触发反序列化,而恶意代码加载方式依旧沿用了CC3。exp:TemplatesImpltemplates=newTemplatesImpl();Classc=templates.getClass();FieldnameField=c......
  • 数据传输序列化 Json和protobuf
    1序列化序列化(Serialization)将对象的状态信息转换为可以存储或传输的形式的过程,与之相对应的过程称之为反序列化(Unserialization)。序列化和反序列化主要用于解决在跨平台和跨语言的情况下,模块之间的交互和调用,但其本质是为了解决数据传输问题。 1.1如何实现序列化......
  • 【Python】0基础学Python——函数参数传递、函数细分、类的信息、元类、自定义元类、p
    0基础学Python——函数参数传递、函数细分、类的信息、元类、自定义元类、pickle序列化、序列化升级函数参数传递参数传递类型标注函数细分task任务型函数consumer消费型函数functional功能型函数类的信息元类type作用自定义元类pickle序列化序列化反序列化序列化升......
  • PHP反序列化(ing)
    类类的结构<?phpclasshero{//定义类(类名)var$name;//声明成员变量,var是一种修饰符var$sex;functionjineng($var1){//声明成员函数(方法)echo$this->name;//使用预定义$this调用成员变量echo$var1;}......
  • Spark 分布式计算中网络传输和序列化的关系(二)
    在Spark分布式计算中,网络传输和序列化是数据处理的重要组成部分。Spark通过将任务划分为多个分布式计算节点来处理数据,而序列化和网络传输直接影响计算性能和数据交互效率。1.序列化在Spark中的作用序列化是Spark将数据对象转换为字节流以进行网络传输或存储的......
  • C#支持将json中的多种类型反序列化为object类型
    我们知道json中的字段是弱类型的,也就是说json中的一个字段不用事先声明具体的类型,这就导致json中某个字段的值有可能是字符串,也有可能是数字,也有可能是布尔值,其它等。。。但是C#是强类型的,定义一个C#类中字段的时候,必须声明它是什么类型,所以我们可以将json中有不同类型的字段在C#......
  • LocalDateTime一些常用方法及示例
    packagecom.aaa.day04.api;importcom.aaa.utils.MyTool;importjava.time.*;importjava.time.format.DateTimeFormatter;importjava.util.Set;/***@author:nie6668888*@date:Createdin2024/11/1514:22*@description:*@modifiedBy:*@version:......
  • RedisTemplate RedisConfig 序列化方式 fastjson2
    SpringDataRedis为我们提供了下面的Serializer:GenericToStringSerializer、Jackson2JsonRedisSerializer、JacksonJsonRedisSerializer、JdkSerializationRedisSerializer、OxmSerializer、StringRedisSerializer。序列化方式对比:JdkSerializationRedisSerializer:使用JDK......
  • Java序列化
    在Java的世界中,序列化是一个不可或缺的概念,它允许我们将对象的状态保存到文件中,或者通过网络传输到其他JVM实例。作为一名Java技术专家和架构师,深入理解序列化机制对于构建高效、可靠的系统至关重要。本文将带你从基础到高级,全面掌握Java序列化。Java序列化基础什么是序列化......