所以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上运行此操作吗?难道我做错了什么?这可能是一个权限问题,因为即使我可以提取私人和公共队列,我使用的帐户也不是本地管理员吗?
谢谢
答案 0 :(得分:1)
我刚才在旧的MSMQ新闻组中回答的问题如果是权限问题可能会有所帮助。
No Manual or Programmatic Access to Dead Letter or Any System Queue
答案 1 :(得分:0)
所以上面的代码很好。只是不对我的Windows 8盒子起作用。在我的一个MQ Server 2012服务器上正常工作。