序列化替代视图对于MSMQ

时间:2013-11-01 09:24:40

标签: c# msmq

我的概念是从网址下载图像并将图像(链接资源)发送到MSMQ的邮件消息!我可以成功下载图像,但我无法将其发送到MSMQ,我需要序列化替代视图,我无法做到的?

这是代码

MailMessage m = new MailMessage();
string strBody="<h1>This is sample</h1><image src=\"cid:image1\">";
m.Body = strBody;
AlternateView av1 = AlternateView.CreateAlternateViewFromString(strBody, null, MediaTypeNames.Text.Html);

我在这里从网址下载图片

Stream DownloadStream = ReturnImage();
LinkedResource lr = new LinkedResource(DownloadStream, MediaTypeNames.Image.Gif);
lr.ContentId = "image1";
av1.LinkedResources.Add(lr);
m.AlternateViews.Add(av);

 private Stream ReturnImage()
    {

        try
        {
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(urlForImage);

            webRequest.ProtocolVersion = HttpVersion.Version10;
            webRequest.KeepAlive = false;

            webRequest.Timeout = 1000000000;
            webRequest.ReadWriteTimeout = 1000000000;

            using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())

            {
               Stream k = webResponse.GetResponseStream();
                MemoryStream ms = new MemoryStream();
                int count = 0;
                do
                {
                    byte[] buf = new byte[1024];
                    count = k.Read(buf, 0, 1024);
                    ms.Write(buf, 0, count);
                } while (k.CanRead && count > 0);
                return ms;
            }
        }
        catch (WebException e)
        {
            return null;
        }

你们可以为序列化备选视图提供解决方案,以便我能够发送和接收MSMQ!

1 个答案:

答案 0 :(得分:0)

我认为你不应该采用这种方法。

MSMQ旨在实现目标,因此发送像图像这样的大量数据并非意图 - 当然,这在技术上是可行的。

另请注意,MSQM每封邮件的限制为4 MB。根据图像的大小,这可能会成为问题(或可能不会)。

相反,我建议您将图像保存到所有参与的应用程序/服务/等可以访问的地方,例如网络共享,文件服务器或Web服务器,或......

然后,您只发送MSMQ消息中的URI。在发送方和接收方都可以非常快速地处理。此外,这将在MSMQ基础设施上轻松得多。