最近又遇到个奇怪的问题,查询出来的时间比数据库中字段存的时间多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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |