C#在系统队列中获取MSMQ消息

时间:2016-01-04 19:49:10

标签: c# msmq

所以C#允许我使用GetPrivateQueues和GetPublicQueues但是没有什么可以获得系统队列。我写了这段代码

string deadLetterQueuePath = @"formatname:DIRECT=OS:.\system$;DeadLetter";

MessageQueue deadLetterQueue = new MessageQueue(deadLetterQueuePath);

Message[] messages = deadLetterQueue.GetAllMessages();

foreach (Message message in messages)
{
    Console.WriteLine(message.ToString());
    Console.ReadLine();
}

MessageQueue行上的代码失败。这是我得到的错误

"指定的格式名称不支持请求的操作。例如,无法删除直接队列格式名称。"

这可能仅限于在我的Windows 8 PC上运行此操作吗?难道我做错了什么?这可能是一个权限问题,因为即使我可以提取私人和公共队列,我使用的帐户也不是本地管理员吗?

谢谢

2 个答案:

答案 0 :(得分:1)

我刚才在旧的MSMQ新闻组中回答的问题如果是权限问题可能会有所帮助。

No Manual or Programmatic Access to Dead Letter or Any System Queue

答案 1 :(得分:0)

所以上面的代码很好。只是不对我的Windows 8盒子起作用。在我的一个MQ Server 2012服务器上正常工作。