m0_59470255 2022-10-10 17:39 采纳率: 0%
浏览 81

C#反序列化报错无效二进制流

问题遇到的现象和发生背景 C#反序列化报错无效二进制流 弄一天了感谢帮忙

img

用代码块功能插入代码,请勿粘贴截图

if (buffer[0] == 1)
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
MemoryStream recvms = new MemoryStream();
recvms.Write(buffer,0,r);
recvms.Position = 0;
File_Mode file_Mode = (File_Mode)formatter.Deserialize(recvms);
using (FileStream fileStream = new FileStream(file_Mode.Path, FileMode.OpenOrCreate, FileAccess.Write))
{
//fileStream.Write(buffer, 1, r - 1);
fileStream.Write(file_Mode.Buffer, 0, file_Mode.Buffer.Length);
}

运行结果及报错内容

img

  • 写回答

1条回答 默认 最新

  • weixin_51128233 2022-10-11 10:51
    关注

    1.确定是不是序列化与反序列化用的是否为同一种规则(方法)
    2.确定是不是更改过某个已序列化的属性名的类型导致反序列化不匹配的错误,如果是这样,在序列化文件里删除这个错误或者更改过的内容即可
    3.不确定问题的情况下删除序列化文件,重新序列化,并给反序列化添加捕获trycath

    评论

报告相同问题?

问题事件

  • 创建了问题 10月10日