2011-10-27 56 views
1

我在其他一些过程中创建我的本地机器上的队列如下:MSMQ读取错误(拒绝访问)

MessageQueue.Create(@".\private$\sampleQueue"); 

而且在我的读者过程中,我重视它,如下所示:

var queue = new MessageQueue(@".\private$\sampleQueue"); 

当我尝试执行queue.Peek()时,出现拒绝访问异常。我不在域上,这只是我本地的工作组计算机。有任何想法吗?

+0

我遇到了这种情况。令人惊讶的是,一旦我使用“计算机管理”窗口读取了队列的统计数据,一切都很顺利。 –

回答

2

如果在“计算机管理”中右键单击队列并选择属性,是否在安全选项卡上设置了适当的权限?

+0

我会尽快检查,但我想指出,另一个创建队列的进程也能够发送消息。与此同时,读者程序正在作为Windows服务运行。 – gzak

2

创建队列的进程使用的凭据必须与用于读取队列的进程的凭证不同。如果这是必须的,那么在创建队列后,您需要专门授予队列所需的读取权限。

+0

我已经授予队列完整权限,但仍然没有任何内容,所以我要查看John今天晚些时候给我的链接。 – gzak