我有一些代码将消息发送到远程队列。
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发送消息时,它的条目会简单地显示“消息来自网络”。它没有其他信息。
已解决,我添加了此:
message.UseDeadLetterQueue = true;
这使服务器将其放入System Queues > Dead-letter messages
下的死信队列中>
一旦发生这种情况,我就可以看到我的消息并单击它,它在“类”标题下显示“访问被拒绝”。
一个快速的Google透露,即使我已向队列授予Everyone
完全访问权限,也有必要在队列的“安全性”选项卡中添加Anonymous Logon
并给予该完全访问权限。