如何从私有工作组队列接收消息

我在远程计算机上有一个私人队列,每个人和匿名登录都有完全访问权限。 尝试接收时,以下代码生成并出错:

var qpath = @"FormatName:DIRECT=TCP:xx.xx.xx.xx\PRIVATE$\QueueName"; var q = new MessageQueue(qpath); var msg = new Message(); msg.AttachSenderId = false; msg.Recoverable = true; msg.Body = "hello"; q.Send(msg); // <-- this works! var recMsg = q.Receive(TimeSpan.Zero); // <-- this breaks! :| 
  • 错误消息是:消息队列服务不可用。
  • 发送的消息最终在远程计算机的队列中
  • 使用OS时会发生同样的情况:MachineName而不是TCP:xx.xx.xx.xx
  • 队列服务器不是域的一部分。

有任何想法吗?

如果远程计算机是其他域的一部分,则:

在运行非信任域中的成员系列的跨林计算机上运行的MSMQ 3.0应用程序将使用安全的远程读取API。 默认情况下,托管包含要读取的消息的队列的MSMQ 3.0服务器要求其他域计算机发出读取请求以建立加密通道,但不能在不可信域之间建立此类通道。 因此,来自跨林计算机的远程读取请求将被拒绝。 若要修改此默认行为并允许消息队列服务器接受来自未建立加密通道的域计算机的请求,请添加

HKLM\SOFTWARE\Microsoft \MSMQ\Parameters\Security\NewRemoteReadServerAllowNoneSecurityClient

注册表项(DWORD)并将其设置为1。

forms如下: 从远程队列中读取消息 。