C# MSMQ向远程队列发送消息

C# MSMQ向远程队列发送消息,c#,msmq,C#,Msmq,我正在尝试向远程队列发送消息。我的进程没有失败,但我仍然看不到远程队列上的消息?我想如果它不能处理消息,它会失败吗 我确实注意到,在我的本地机器上,远程队列列在传出队列中,但在那里也看不到消息。我在这里非常无知,所有的例子都表明我所做的(或者我假设的)是正确的 代码(用于测试的简单代码): 使用(var transaction=new TransactionScope()) { 使用(var queue=newmessagequeue(@“FormatName:DIRECT=OS:mymachi

我正在尝试向远程队列发送消息。我的进程没有失败,但我仍然看不到远程队列上的消息?我想如果它不能处理消息,它会失败吗

我确实注意到,在我的本地机器上,远程队列列在传出队列中,但在那里也看不到消息。我在这里非常无知,所有的例子都表明我所做的(或者我假设的)是正确的

代码(用于测试的简单代码):

使用(var transaction=new TransactionScope())
{
使用(var queue=newmessagequeue(@“FormatName:DIRECT=OS:mymachine\MyQueueQueue”))
{
XDocument xdoc=XDocument.Parse(“”);
var message=新消息(xdoc.ToString());
Send(message,MessageQueueTransactionType.Single);
}
transaction.Complete();
}
Console.Read();
}

我做错了什么?奇怪…没有错误,但在任何地方都看不到消息。写入我的本地队列。

您在本地机器上看到的队列是MSMQ如何将消息从您的机器传输到远程机器的。所以只要上面没有信息,就不用担心。如果上面有消息表明远程队列由于某种原因不可用

可能的权限可能是一个问题。检查远程队列上的发送权限。如果呼叫是跨域的,您需要将匿名登录添加到您的权限中

同时尝试启用MSMQ事件日志(如果您运行的是server 2008或更高版本)

更新

看起来您正在调用公共队列地址。您应该使用专用队列。地址相同,但PRIVATE$指令除外:

FormatName:DIRECT=OS:mymachine\PRIVATE$\MyQueueQueue


另外:您的队列名称myQueueQueue与您的队列地址类似吗

谢谢@hugh…查看了事件日志…到目前为止没有看到任何内容。将查看许可证谢谢您该队列上的发送/接收烫发!我非常感谢。您不会在事件日志中看到任何内容,因为这只会显示真正的问题-对于消息传递系统,丢失邮件可视为正常现象。负面源日志记录是解决此类问题的最佳方法,因为死信队列中的邮件解释了问题的原因。在windows 2008上,我必须将发送/接收权限设置为匿名登录,并且必须在端口3527协议UDP上添加防火墙条目规则。谢谢你的指导
    using (var transaction = new TransactionScope())
    {
        using (var queue = new MessageQueue(@"FormatName:DIRECT=OS:mymachine\MyQueueQueue"))
        {
            XDocument xdoc = XDocument.Parse("<root/>");

                 var message = new Message(xdoc.ToString());
                queue.Send(message, MessageQueueTransactionType.Single);
        }

        transaction.Complete();
    }

    Console.Read();
}