如何调试未到达远程服务器的MSMQ消息?

问题描述 投票:0回答:1

我有一些代码将消息发送到远程队列。

var queue = new MessageQueue(queueName);
var message = new Message(queueMessage, new BinaryMessageFormatter());
queue.Send(message);

我尝试使用IP和主机名设置队列,没有区别:

FormatName:Direct = TCP:1.2.3.4 \ Private $ \ my.queueFormatName:Direct = OS:servername \ Private $ \ my.queue

邮件显示在外发邮件队列中(如果我暂停了)

未暂停时,它们将被发送到服务器。

服务器上设置了专用队列。没有任何运行会使消息脱离队列。

但是,消息永远不会出现在远程计算机的队列中。我不知道如何调试此问题。该队列是私有的非事务性队列。

创建本地专用队列并向其发送消息可以正常工作。

是否有一些日志或我可以查看的东西以查看可能发生了什么?

传出消息中的状态显示为“已连接”,因此没有连接问题。

编辑:

我可以找到的唯一日志记录是在事件查看器中> microsoft> windows> msmq,当我通过MSMQ发送消息时,它的条目会简单地显示“消息来自网络”。它没有其他信息。

c# msmq
1个回答
0
投票

已解决,我添加了此:

message.UseDeadLetterQueue = true;

这使服务器将其放入System Queues > Dead-letter messages下的死信队列中>

一旦发生这种情况,我就可以看到我的消息并单击它,它在“类”标题下显示“访问被拒绝”。

一个快速的Google透露,即使我已向队列授予Everyone完全访问权限,也有必要在队列的“安全性”选项卡中添加Anonymous Logon并给予该完全访问权限。

© www.soinside.com 2019 - 2024. All rights reserved.