gpt4 book ai didi

c# - 无法以编程方式查看远程(私有(private))msmq : Access to Message Queuing system is denied

转载 作者:太空狗 更新时间:2023-10-30 00:39:56 24 4
gpt4 key购买 nike

我有一个非常简单的控制台应用程序,它无法查看远程私有(private)队列中的消息。

var queues = MessageQueue.GetPrivateQueuesByMachine(machineName);
var queue = queues.Where(x=>x.FormatName == queueName).Single();
Message message = queue.Peek();

Peek 调用失败,出现“访问消息队列系统被拒绝”的 MessageQueueException。

使用相同的客户端计算机和用户,我可以使用队列资源管理器和消息队列管理单元查看队列。

使用本地队列进行试验时,我只能通过取消对队列的 Peek 权限来重现错误,但这也会在其他工具中停止它。

我看到很多信息都指出了概述的问题 here .

但是,如果这些事情中的任何一个是问题所在,我也无法使用其他工具来完成。

编辑我已经能够使用 MSMQQueueInfo 让它工作/MSMQQueue COM 对象而不更改任何凭据。如果我可以使用 .NET 库使其工作,那就太好了,但至少我有一个解决方法。

最佳答案

我的问题是,当使用 GetPrivateQueuesByMachine 获取队列时,它使用 SendAndReceive 的访问模式,这要求比我拥有的权限更多。我必须使用 MessageQueue 构造函数来指定 AccessMode。 (在本例中为 Peek。)

最后,我能够使用类似于以下的代码让它工作:

var queue = new MessageQueue(@"FormatName:DIRECT=OS:machineName\private$\queueName", QueueAccessMode.Peek);
Message message = queue.Peek();

关于c# - 无法以编程方式查看远程(私有(private))msmq : Access to Message Queuing system is denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32274864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com