我正在尝试获取远程机器上可用队列的列表。该机器是工作组模式下的 Win2003R2,运行代码的客户端机器是使用相同工作组名称的 Windows 8 机器。运行以下代码时出现异常:
var messages = MessageQueue.GetPrivateQueuesByMachine("Win2003SRV");
错误信息是:
base {System.Runtime.InteropServices.ExternalException}: {"Access to Message Queuing system is denied."}
Message: "Access to Message Queuing system is denied."
MessageQueueErrorCode: AccessDenied
我很确定它与 Windows 2003 上的权限有关,但找不到太多。该代码适用于另一个 Win Server 2008(但处于工作组模式)并且也适用于本地 MSMQ。根据MSDN page,工作组模式支持此功能,那么有什么问题?
解决了:
我的问题原来是我的客户端机器上没有安装 MSMQ!链接上的帮助为我指明了正确的方向,所以我所要做的就是在客户端机器上安装 MSMQ。如果您查看 GetPrivateQueuesByMachine 的实现,本机调用可能会抛出 DllNotFoundException 并且正是该异常转换为该特定消息,因此它应该给您提示什么是错误的