我在其他一些过程中创建我的本地机器上的队列如下:MSMQ读取错误(拒绝访问)
MessageQueue.Create(@".\private$\sampleQueue");
而且在我的读者过程中,我重视它,如下所示:
var queue = new MessageQueue(@".\private$\sampleQueue");
当我尝试执行queue.Peek()
时,出现拒绝访问异常。我不在域上,这只是我本地的工作组计算机。有任何想法吗?
我在其他一些过程中创建我的本地机器上的队列如下:MSMQ读取错误(拒绝访问)
MessageQueue.Create(@".\private$\sampleQueue");
而且在我的读者过程中,我重视它,如下所示:
var queue = new MessageQueue(@".\private$\sampleQueue");
当我尝试执行queue.Peek()
时,出现拒绝访问异常。我不在域上,这只是我本地的工作组计算机。有任何想法吗?
如果在“计算机管理”中右键单击队列并选择属性,是否在安全选项卡上设置了适当的权限?
我会尽快检查,但我想指出,另一个创建队列的进程也能够发送消息。与此同时,读者程序正在作为Windows服务运行。 – gzak
MSMQ使用不同的协议为它的工作:
如果它不是一个简单的权限问题(这是很可能是),那么你需要这个博客帖子:
了解如何MSMQ安全阻止RPC通信 http://blogs.msdn.com/b/johnbreakwell/archive/2010/03/24/understanding-how-msmq-security-blocks-rpc-traffic.aspx
干杯
John
创建队列的进程使用的凭据必须与用于读取队列的进程的凭证不同。如果这是必须的,那么在创建队列后,您需要专门授予队列所需的读取权限。
我已经授予队列完整权限,但仍然没有任何内容,所以我要查看John今天晚些时候给我的链接。 – gzak
我遇到了这种情况。令人惊讶的是,一旦我使用“计算机管理”窗口读取了队列的统计数据,一切都很顺利。 –