在本地查询队列会引发异常

时间:2012-05-15 05:37:47

标签: msmq

我正在尝试使用以下代码查询我机器上的本地队列:

var c = new MessageQueueCriteria();
c.MachineName = Environment.MachineName;
var queues = MessageQueue.GetMessageQueueEnumerator(c);

但代码在第二行引发异常抱怨:

工作组安装计算机不支持该操作。

堆栈跟踪:在System.Messaging.MessageQueue.GetMachineId(String machineName)    at System.Messaging.MessageQueueCriteria.set_MachineName(String value)

并将MessageQueueErrorCode枚举设置为System.Messaging.MessageQueueErrorCode.UnsupportedOperation。

奇怪的是我在一个域而不是一个工作组!和其他应用程序(QueueExplorer)似乎工作文件。我有什么想法可以解决它吗?

更新:似乎错误来自运行属性设置器中的这段代码,但不知道如何修复它。

new MessageQueuePermission(MessageQueuePermissionAccess.Browse, "*").Demand();

1 个答案:

答案 0 :(得分:1)

使用 GetPublicQueues 方法时, MessageQueueCriteria 类用于过滤 PUBLIC 消息队列。为了能够浏览公共队列,您必须启用 MSMQ Active Directory服务集成功能。如果您的计算机加入域名是不够的。

如果您想浏览本地 PRIVATE 队列,请使用:

MessageQueue[] queues = MessageQueue.GetPrivateQueuesByMachine(Environment.MachineName);