2012-05-15 31 views
0

我想查詢我的機器上我的本地隊列,與後續代碼:查詢隊列本地拋出一個異常

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

但代碼拋出第二行抱怨異常:

工作組安裝計算機不支持該操作。

堆棧跟蹤:在System.Messaging.MessageQueue.GetMachineId(字符串MACHINENAME) 在System.Messaging.MessageQueueCriteria.set_MachineName(字符串值)

和MessageQueueErrorCode枚舉設定爲System.Messaging.MessageQueueErrorCode.UnsupportedOperation 。

奇怪的是我在一個域上,而不是一個工作組!和其他應用程序(QueueExplorer)似乎工作文件。任何想法如何能解決它?

更新:似乎錯誤來自運行屬性的setter中的這段代碼,不知道如何解決它。

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

回答

1

MessageQueueCriteria用於使用GetPublicQueues方法時過濾PUBLIC消息隊列。爲了能夠瀏覽公共隊列,您必須啓用MSMQ Active Directory服務集成功能。如果你的電腦加入到一個域是不夠的。

如果您想瀏覽本地PRIVATE隊列,你應該使用:

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