C#关于MSMQ通过HTTP远程发送专有队列消息的问题

daming_ocean 2009-07-03 06:01:46
两台计算机的操作系统都是Windows Server 2008
两台计算机都安装了MSMQ+Http支持
两台计算机的防火墙全部关闭
本地Ip:192.168.1.104
远程Ip:192.168.1.142
远程建立专有队列:Test
本地发送消息的代码:
System.Messaging.MessageQueue mq =
new System.Messaging.MessageQueue ("FormatName:Direct=http://192.168.1.142/msmq/Private$/Test");
mq.Send("Hello");
可是远程计算机就是收不到这个信息
本地MSMQ中传出队列显示 "FormatName:Direct=http://192.168.1.142/msmq/Private$/ProxyLog" 正在等待连接,但是消息很慢的一个一个减少
请问如何解决这个问题么?
...全文
823 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangqianjob 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 daming_ocean 的回复:]
终于搞明白了,这个问题的根本原因是这样的。

在 Windows Server 2008 上安装 IIS 服务和 MSMQ 功能后,系统会在 IIS 的默认网站下建立一个 MSMQ 默认网络。

如果将 IIS 的默认网站删除了,那么这个默认的 MSMQ 网络就无法建立,也就无法接受信息了。

结论:要使用 MSMQ,IIS 的默认网站千万不要删除。否则只能重装 IIS 了。
[/Quote]

我也遇到类似的问题了:我使用tcp协议发送根本就发送不出去,传出队列中消息一直存在,可是如果改用http协议发送,能发不能收,消息发送出去了,可是远程计算机并没有收到消息。
我想问下楼主,你这里IIS的默认MSMQ的网站是只要远程服务器上有就可以了吧?【因为我现在是网页版发送消息的】。
daming_ocean 2010-12-07
  • 打赏
  • 举报
回复
终于搞明白了,这个问题的根本原因是这样的。

在 Windows Server 2008 上安装 IIS 服务和 MSMQ 功能后,系统会在 IIS 的默认网站下建立一个 MSMQ 默认网络。

如果将 IIS 的默认网站删除了,那么这个默认的 MSMQ 网络就无法建立,也就无法接受信息了。

结论:要使用 MSMQ,IIS 的默认网站千万不要删除。否则只能重装 IIS 了。
  • 打赏
  • 举报
回复
msmq只能保证可靠,不丢失,即使传输中某些主机关闭也不丢失,就像mail一样,它的价值体现在可靠性。但是要响应速度还是应该使用其它方式。

对于远程,“192.168.1.142"这是不可能知道是什么的(另外一个局域网里边的内网IP)!
lanqiminghao 2010-08-19
  • 打赏
  • 举报
回复
请高手出来解答,很多用户出现过同样现象,
happyboyxq 2010-08-19
  • 打赏
  • 举报
回复
把http协议改成tcp协议试一下。我用tcp可以测试成功,不过是局域网内。对于外网的MSMQ只能发不能收。
FormatName:Direct=tcp:192.168.1.142\Private$\Test
lyre129 2009-07-03
  • 打赏
  • 举报
回复
也不会,期待解答!
cnming 2009-07-03
  • 打赏
  • 举报
回复
mark

111,077

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧