Message Pack:不要将 System.Boolean (binary:0x0) MessagePackObje
本文关键字:binary 0x0 MessagePackObje Boolean System Pack Message | 更新日期: 2023-09-27 18:33:51
我们在将打包的消息解压缩到对象时收到以下错误。此错误在本地开发环境 (Windows 7) 上未注意到,但在服务器环境中发生。(服务器 2008)。
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.Serialization.SerializationException: The unpacked value is not expected type. Do not convert System.Boolean (binary:0x0) MessagePackObject to System.Int64. ---> System.InvalidOperationException: Do not convert System.Boolean (binary:0x0) MessagePackObject to System.Int64.
at MsgPack.MessagePackObject.ThrowInvalidTypeAsT
at MsgPack.MessagePackObject.AsInt64()
at MsgPack.Serialization.DefaultSerializers.System_DateTimeMessagePackSerializer.UnpackFromCore(Unpacker unpacker)
--- End of inner exception stack trace ---
at MsgPack.Serialization.DefaultSerializers.System_DateTimeMessagePackSerializer.UnpackFromCore(Unpacker unpacker)
at MsgPack.Serialization.DefaultSerializers.NullableMessagePackSerializer1.UnpackFromCore(Unpacker unpacker) at MsgPack.Serialization.MessagePackSerializer1.UnpackFrom(Unpacker unpacker)
编辑:有关此问题的更多详细信息:我们有两个环境(本地和中央)。我们尝试通过 TCP 套接字发送从本地转换为消息包的对象,并将解压缩回中心的对象。
我们尝试在两台不同的 Windows 7 机器上部署本地应用程序和中央 Tcp 侦听器,我们在中央打包数据没有问题。但是,当我们尝试在Windows7计算机上部署本地并在Windows 2008服务器上部署Central时(这将是实际的生产方案),我们遇到了此问题。在这两种情况下,我都通过测试应用程序使用相同的数据打包和解压缩相同的对象。我们仍然无法找到问题的根本原因。
我们错过了什么吗?
您显然正在尝试将布尔值转换为 int64,这是无效的转换。 也许您没有在开发环境中观察到它,因为要解压缩到对象的消息与在生产环境中解压缩的消息不同。
您需要确保在 Dev 和 Live 中的输入相同,然后从那里继续。