1

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

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

但代码在第二行抛出异常,抱怨:

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

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

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

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

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

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

1 回答 1

2

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

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

MessageQueue[] queues = MessageQueue.GetPrivateQueuesByMachine(Environment.MachineName);
于 2012-05-16T09:23:13.853 回答