【问题标题】:C# Get MSMQ Messages in System QueuesC# 在系统队列中获取 MSMQ 消息
【发布时间】:2016-01-06 21:04:34
【问题描述】:

所以 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 上运行它的限制吗?难道我做错了什么?这可能是权限问题,因为我使用的帐户不是本地管理员,即使我可以拉私有和公共队列?

谢谢

【问题讨论】:

    标签: c# msmq


    【解决方案1】:

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

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

    【讨论】:

    • 有趣。即使作为我本地 PC 上的管理员,它也无法正常工作。我从没想过要检查 AD 中的对象。感谢您提供此信息。
    【解决方案2】:

    所以上面的代码很好。只是不适用于我的 Windows 8 机器。在我的一台 MQ Server 2012 服务器上运行良好。

    【讨论】:

    • 不会依赖于操作系统。
    猜你喜欢
    • 2014-10-06
    • 2011-01-18
    • 1970-01-01
    • 2011-04-28
    • 2011-05-01
    • 2017-06-16
    • 2012-03-27
    • 2014-08-26
    • 2017-11-11
    相关资源
    最近更新 更多