小编mdi*_*bio的帖子

MSMQ + C#,接收带有编码byte []主体的消息在Windows 7与Windows XP上的行为有所不同

我有一个应用程序,显示MSMQ消息队列中的消息的内容.Windows 7上的MSMQ存在问题,而不是保留邮件正文中数据的真实对象类型.在这个例子中,我发送一个byte [],然后当我收到它时,它不再是一个字节数组,而是包装的XML容器文档.在Windows XP中,我从未遇到过此问题,并且Message.Body属性始终正确设置为byte [].

这是压缩代码:

    public void SendWithCompression(string Message)
    {
        try
        {
            // Compress the message data in memory.
            byte[] UncompressedData = Encoding.UTF8.GetBytes(Message);
            byte[] CompressedData = null;

            MemoryStream s = new MemoryStream();
            using (GZipStream z = new GZipStream(s, CompressionMode.Compress))
            {
                z.Write(UncompressedData, 0, UncompressedData.Length);
            }
            CompressedData = s.ToArray();

            if (_Transaction != null)
            {
                _Transaction.Begin();
                base.Send(CompressedData, _Transaction);
                _Transaction.Commit();
            }
            else
            {
                base.Send(CompressedData);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
Run Code Online (Sandbox Code Playgroud)

以下是测试消息的消息内容.它最终成为包装编码二进制数据的XML文档: <?xml version="1.0"?>..<base64Binary>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Ih63edMefTsvy2rv8V3+4/8ByygBlxMAAAA=</base64Binary>


以下是它使用的解压缩代码:

        String Data;
        //Get message and format …
Run Code Online (Sandbox Code Playgroud)

.net c# msmq windows-7

2
推荐指数
1
解决办法
6852
查看次数

标签 统计

.net ×1

c# ×1

msmq ×1

windows-7 ×1