0

我的概念是从 url 下载图像并将图像(链接资源)发送到邮件消息到 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);

在这里,我正在从 url 下载图像

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 !

4

1 回答 1

0

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

MSMQ 被设计成轻量级的,因此发送像图像这样的大数据并不是本意——当然,这在技术上是可行的。

另请记住,MSQM 每条消息的大小限制为 4 MB。根据图像的大小,这可能会成为问题(或可能不会)。

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

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

于 2013-11-01T12:06:00.010 回答