我在远程计算机上有一个私有队列,每个人和匿名登录都可以完全访问。尝试接收时会产生以下代码并出错:
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。
这是形式:从远程队列读取消息 http://msdn.microsoft.com/en-us/library/ms699854(VS.85).aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)