解决.net 5中BinaryFormatter serialization and deserialization are disabled within this application的问题


最近在项目开发过程中调用类库出现这个问题,查了下文档,发现是微软在新版本中禁用了BinaryFormatterDeserialize,具体的一些信息可以看官方的文档

解决方案

https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/binaryformatter-security-guide

不过文档中只给出了几个替代方案,就是使用 XmlSerializerDataContractSerializerBinaryReaderBinaryWriterSystem.Text.JsonAPI 这几种方法替代

由于我这边不想对原有的引用类库做很大的改动,于是我又去找了新的解决办法,最后找到了一个临时替代的方案,这个只需要在项目的配置文件中添加一个属性 EnableUnsafeBinaryFormatterSerialization 设置为 true 即可

<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>

就像截图中的那样


这个方案是从dotnet源代码的修改记录中找到的,下面给出地址,有兴趣的话可以自己去看看

这是源代码修改记录

这是解决方案Issue: https://github.com/PowerShell/PowerShell/issues/14032

注意

最后,还是希望用推荐的解决方案处理这个问题,因为不知道后面那个版本就会彻底移除这个方法了