NetCore3.1升级到Net5.0序列化方法过时问题
问题描述:Net5.0已经出来有段时间了,就琢磨的项目升级到5.0试一试的,按照方法,把项目sdk版本修改完后基本就算升级成功了,但是有个Redis序列化的方法有警告,提示这个
1 | 警告 SYSLIB0011 “BinaryFormatter.Serialize(Stream, object )”已过时:“BinaryFormatter serialization is obsolete and should not be used. See https: //aka.ms/binaryformatter for more information.” |
打开微软的说明页面,大概意思就是随便将泛型的数据写入和读取内存,存在风险隐患。
解决方案:按照微软的提示,将方法换一下就哦了
/// <summary> /// 序列化 /// </summary> /// <param name="obj"></param> /// <returns></returns> private static byte[] Serialize(object obj) { if (obj == null) return null; using var memoryStream = new MemoryStream(); DataContractSerializer ser = new DataContractSerializer(typeof(object)); ser.WriteObject(memoryStream, obj); var data = memoryStream.ToArray(); return data; } /// <summary> /// 反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data"></param> /// <returns></returns> private static T Deserialize<T>(byte[] data) { if (data == null) return default(T); using var memoryStream = new MemoryStream(data); XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(memoryStream, new XmlDictionaryReaderQuotas()); DataContractSerializer ser = new DataContractSerializer(typeof(T)); var result = (T)ser.ReadObject(reader, true); return result; }
有个问题,就是要序列化的类,必须多加几个处理,比如下面这样,当然不能保证我的解决办法就是最优的。。。
[Serializable] [KnownType(typeof(AuthorizeActionModel))] [DataContract(Name = "Customer", Namespace = "http://www.contoso.com")] public class AuthorizeActionModel : IExtensibleDataObject { /// <summary> /// 菜单编号 /// </summary> [DataMember] public string SysModuleId { set; get; } /// <summary> /// 链接地址 /// </summary> [DataMember] public string PageLink { set; get; } private ExtensionDataObject extensionData_Value; public ExtensionDataObject ExtensionData { get { return extensionData_Value; } set { extensionData_Value = value; } } }
再附带一个小问题,就是docker镜像路径的变化
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1 + docker pull mcr.microsoft.com/dotnet/aspnet:5.0
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战