этот мой первый вопрос так извините, если формат еще не совершенен.Aspx в разных средах
У меня есть небольшое приложение, общающееся через MSMQ, поэтому я решил сделать веб-страницу aspx для мониторинга содержимого этого msmq.
Я протестировал эту страницу на нашем сервере приема, работает отлично. Однако, когда я тестирую его на нашем prod-сервере, если msmq не пуст, у меня есть страница с сообщением «SERVER ERROR IN MSMQ MONITORING: Невозможно найти форматировщик, способный читать это сообщение».
Вот соответствующий раздел кода:
@{
var errorMessage = "";
string queueName = ".\\Private$\\cotfollowupqueue";
System.Messaging.MessageQueue myqueue = new System.Messaging.MessageQueue(@queueName);
System.Messaging.Message[] msgs = new System.Messaging.Message[0];
try {
msgs= myqueue.GetAllMessages();
}
catch (Exception ex)
{
errorMessage = "An error occured : " + ex.Message.ToString();
}
myqueue.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(AwaitingOrder_DTO) });
}
@section featured {
<section class="featured">
<div class="content-wrapper">
<hgroup class="title">
<h1>@Page.Title .</h1>< br/>
<h2>Content of the MSMQ</h2>
</hgroup>
<p>This table will show you the content of the MicroSoft Message Queuing used for COT Follow Up.</p>
<p>
<!-- ADD THINGS HERE -->
@errorMessage
<table border="1">
<tr>
<td>COT ID</td>
<td>Row ID</td>
<td>Number of attempts</td>
<td>Next attempt at</td>
<td>Cot Message</td>
<td>Status</td>
<td>Success</td>
</tr>
@foreach (var msg in msgs)
{
myqueue.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(AwaitingOrder_DTO) });
var message = (AwaitingOrder_DTO)msg.Body;
<tr>
<td>@message.COTID</td>
<td>@message.rowId</td>
<td>@message.numberOfRetries</td>
<td>@message.nextAttempt</td>
<td>@message.cotMessage</td>
<td>@message.status</td>
<td>@message.success</td>
</tr>
}
</table>
</p>
</div>
</section>
}
Код копия паста с одного сервера на другой, и развертывание было сделано точно таким же образом. Кто-нибудь знает, что я могу проверить, чтобы исправить это?
Я искал решения, но: у меня есть форматировщик, поэтому это не проблема. Код работает на другом сервере, поэтому я предполагаю, что он может быть не связан с самим кодом, а с окружением. Я проверил «перейти к определению», где страница получила «ожидающий заказ dto» и «определение очереди», и она отправляет меня на страницу «из метаданных», которая заставляет меня задаться вопросом, может ли это быть проблемой, но я очень сомневаюсь, что, поскольку даже если писатель очереди не находится в непосредственных метаданных, страница может отправлять сообщения на msmq, а не читать его содержимое.
Любая идея?
(Извините за длинный пост)
Это звучит для меня очень хорошо, как на вашем производственном сервере есть сообщения, которые не соответствуют структуре, которую вы ожидаете, есть ли способ проверить это? –
Эта очередь используется только одной программой, и в очереди нет ничего. Я провел несколько тестов, так как страница также может создавать минимальное сообщение и отправлять его в msmq, и сообщения отправляются правильно, но как только очередь не пуста, poof. – DoctorPrisme
http://stackoverflow.com/questions/655276/message-queue-error-cannot-find-a-formatter-capable-of-reading-message? – brijber