DOTNET MessagePack序列化/反序列化时不保留 DateTime.Kind
最近又遇到个奇怪的问题,查询出来的时间比数据库中字段存的时间多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
作者:Rick Carter
出处:http://pains.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。