Я новичок в MSMQ и пытаюсь отправить XML-сообщение в удаленную транзакционную очередь. Обе машины - сервер 2003 года. Я могу заставить его работать с не транзакционной удаленной очередью. Кажется, я не могу передать сообщения в транзакционную очередь. Код C# приведен ниже. Идо не получить ошибку, она просто не появляется.Отправка MSMQ MEssage в удаленную транзакционную очередь
Message rqMessage = new Message();
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof([message type]));
XmlTextWriter writer = new XmlTextWriter(rqMessage.BodyStream, Encoding.UTF8);
ser.Serialize(writer, rqDoc);
rqMessage.Label = "message label";
rqMessage.TimeToBeReceived = Message.InfiniteTimeout;
rqMessage.TimeToReachQueue = Message.InfiniteTimeout;
rqMessage.ResponseQueue = new MessageQueue("Path");
rqMessage.Formatter = new ActiveXMessageFormatter();
MessageQueue rqQueue = new MessageQueue(nodeRequestQueue.SelectSingleNode("Path").InnerText);
bool transactional = false;
try
{
transactional = rqQueue.Transactional;
}
catch(MessageQueueException)
{
transactional = false;
}
if (transactional)
rqQueue.Send(rqMessage, MessageQueueTransactionType.Single);
else
rqQueue.Send(rqMessage);
Проблема у меня в том, что у меня нет доступа для изменения этого кода. Мы используем стороннее приложение, и я попросил их прочитать этот фрагмент кода. Поэтому я не могу это проверить. Я смог написать собственное приложение и протестировать его, я считаю, что проблема в том, что это веб-приложение, и я не уверен, какой пользователь он запускает и пытается получить доступ к удаленной очереди. – user1390125
Есть ли какая-то конкретная причина, почему вам нужна транзакционная очередь? Если вы не можете изменить программное обеспечение 3rdparty, вы не можете многое сделать. –
Поскольку 'MessageQueueTransaction' является' IDisposable', рекомендуется использовать его в 'using'. Я обновил ответ соответственно. –