C# 将MSMQ消息发送到远程事务队列

C# 将MSMQ消息发送到远程事务队列,c#,msmq,msdtc,transactional-queue,C#,Msmq,Msdtc,Transactional Queue,我是MSMQ新手,正在尝试向远程事务队列发送XML消息。这两台机器都是2003服务器。我可以让它使用非事务性远程队列。我似乎无法将消息放到事务队列中。下面是C代码。我没有得到一个错误,只是从来没有出现过 Message rqMessage=new Message(); System.Xml.Serialization.XmlSerializer ser=new System.Xml.Serialization.XmlSerializer(typeof([message type]); XmlTe

我是MSMQ新手,正在尝试向远程事务队列发送XML消息。这两台机器都是2003服务器。我可以让它使用非事务性远程队列。我似乎无法将消息放到事务队列中。下面是C代码。我没有得到一个错误,只是从来没有出现过

Message rqMessage=new Message();
System.Xml.Serialization.XmlSerializer ser=new System.Xml.Serialization.XmlSerializer(typeof([message type]);
XmlTextWriter=新的XmlTextWriter(rqMessage.BodyStream,Encoding.UTF8);
序列序列化(编写器,rqDoc);
rqMessage.Label=“消息标签”;
rqMessage.TimeToBeReceived=Message.InfiniteTimeout;
rqMessage.TimeToReachQueue=Message.InfiniteTimeout;
rqMessage.ResponseQueue=新消息队列(“路径”);
rqMessage.Formatter=新的ActiveXMessageFormatter();
MessageQueue rqQueue=newmessagequeue(nodeRequestQueue.SelectSingleNode(“路径”).InnerText);
bool=false;
尝试
{
transactional=rqQueue.transactional;
}
捕获(MessageQueueException)
{
事务=假;
}
如果(事务性)
发送(rqMessage,MessageQueueTransactionType.Single);
其他的
rqQueue.Send(rqMessage);

您可以显式创建事务

using (var transaction = new MessageQueueTransaction())
{
    transaction.Begin();
    rqQueue.Send(rqMessage, transaction);
    transaction.Commit();
}

对于正在使用的重载,可能您没有“直接格式名称”,并且不支持该选项

我的问题是,我没有权限更改此代码。我们使用的是第三方应用程序,我要求他们提供这段代码片段来查看它。所以,我不能真正测试它。我能够编写自己的应用程序并对此进行测试,我相信问题在于这是一个web应用程序,我不确定它运行在哪个用户之下,并且正在尝试访问远程队列。您需要事务性队列的具体原因是什么?如果您无法更改第三方软件,那么您就无能为力。由于
MessageQueueTransaction
IDisposable
的,因此最好使用
语句将其用法包装到
中。我相应地更新了答案。