当用户没有对队列的权限时,发送的MSMQ消息会发生什么情况

做了一些testing,看起来好像我试图发送一个消息到一个队列,用户被拒绝了“发送消息”权限,发送的消息就消失了。 它并不出现在死信队列,传出队列,或任何其他地方,我曾想过看。 发送消息时也不会抛出任何exception。

那个消息正在发生什么? 它真的只是被吃掉了,还是有什么我失踪?

这里是我用来发送消息的代码:

var q = new MessageQueue(@"[ComputerName]\Test"); q.Send("foo"); 

默认情况下,MSMQ将丢弃所有因任何原因无法传送的消息。 除非您发送到本地机器,否则不会有错误信息。

发送到远程计算机时,如果不能将消息放入传出队列中,则只会出现错误消息,从而无法传递到远程队列。 发送到本地计算机时,没有传出队列机制,本地队列pipe理器将尝试将消息直接放入所需的队列中,以便可以收到错误消息。

您需要启用负面日志logging,以便将邮件的副本放入相应的死信队列中,以便找出未送达的原因。

干杯
约翰·Breakwell

总之…如果你没有权限发送到该队列…你应该得到一个错误消息返回您尝试发送消息的任何方法。 如果你没有检查它,那么这个消息就会被扔在永久的比特桶中,而且是不可检索的。 如果没有更多关于将消息发送到队列的信息,我甚至无法开始帮助您解决问题。