【问题标题】:Protobuf-net serialization InvalidOperationExceptionProtobuf-net 序列化 InvalidOperationException
【发布时间】:2012-08-31 12:39:27
【问题描述】:

我有一个自定义对象,我正在尝试使用 Protobuf-net 序列化并引发以下异常:

InvalidOperationException 未处理:在写入 String 数据之前无法写入 Variant 标头

我发现有趣的是,在我的对象图中,没有任何地方正在序列化字符串。有没有人见过这样的错误,是否有已知的原因/修复?谢谢

【问题讨论】:

  • 在这种情况下,“字符串数据”是指 protobuf 线规范,其中“字符串”是 wire-type,不一定表示“字符串”文本”。基本上,它通常是“header, value, header, valye, ...”,其中 header 包括(以非常压缩的形式)以下值的线型;因此,如果它发现自己在写“header,header”,它就知道出了点问题,并且它抱怨没有为第一个 header 写入任何值,它恰好是类型:“string”。总的来说,我怀疑这是一个长期修复的错误。

标签: c# serialization protobuf-net


【解决方案1】:

这看起来很像这里的错误:

https://code.google.com/p/protobuf-net/issues/detail?id=218

您是否在对象中的某个位置序列化零长度字节[]?

【讨论】:

  • 在所有发生此错误的情况下都有一个零长度字节数组。我已经阻止了零长度数组的发生,这似乎已经解决了问题。我可能会尝试稍后构建 protobuf-net,看看是否能更正确地修复问题
  • @mcd 发生这种情况时您使用的是哪个版本?
  • @MarcGravell 我认为是 2.0.0.404
猜你喜欢
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
相关资源
最近更新 更多