我是VB6的新手,也是MSMQ的新手。我在网上读了很多教程,但似乎没有办法解决我的问题。
我设法从C#发送到C#或VB6发送到VB6,但没有从VB6发送到C#,反之亦然。所以我想知道这是一种方式,还是没有办法进行这种交流。
例如:我想将这个发送到MSMQ
Dim PropBag As PropertyBag
Set PropBag = New PropertyBag
PropBag.WriteProperty "Customer", "Bob"
PropBag.WriteProperty "Product", "MoeHairSuit"
PropBag.WriteProperty "Quantity", 4在C#中获取详细信息,在给定的编码中有“无效字符。第1行,位置1”。使用XmlMessageFormatter时出错
Message mes = mq.Receive(new TimeSpan(0, 0, 3));
mes.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
result = mes.Body.ToString();我也试着从溪流中读出来,但它在我的字符串中出现了一个奇怪的符号。下面是代码,这是输出“늓\0\0\b\b휖ꭑ(늓)”
Message mes;
mes = mq.Receive(new TimeSpan(0, 0, 3));
mes.BodyStream.Position = 0;
byte[] b = new byte[mes.BodyStream.Length];
mes.BodyStream.Read(b, 0, (int)mes.BodyStream.Length);
UnicodeEncoding uniCoder = new UnicodeEncoding();
result = uniCoder.GetString(b);我得到这个异常“不能反序列化作为参数传递的消息。无法识别序列化格式。”使用ActiveXMessageFormatter时,如下所示
mes = mq.Receive(new TimeSpan(0, 0, 3));
mes.Formatter = new ActiveXMessageFormatter();
result = mes.Body.ToString();你们知道怎么做吗?高级致谢
发布于 2014-06-26 14:30:35
我以前处理过这种类型的问题,而我找到的最好的解决方案实际上是将对象序列化成XML --之后,您使用哪种语言/平台对语言进行编码/解码并不重要,因为您总是有选择的文本格式。在二进制格式中,直接格式化程序并不一定在平台上以相同的方式工作(VB6/C#)。
参考资料:http://www.codeproject.com/Articles/33296/Serialization-and-De-serialization
换句话说,您需要在两个平台上都有一个标准序列化程序,而不是试图序列化属性包本身。
发布于 2014-06-25 12:19:16
VB6属性包以二进制格式存储数据。然后尝试以文本格式读取数据。这就是整个问题所在。无法识别的字符--是PropertyBag.Try中数据的类型和大小,以便在两边以二进制形式进行数据交换。
https://stackoverflow.com/questions/24404013
复制相似问题