Aspx в различных средах

это мой первый вопрос так жаль, если формат еще не идеален.

У меня есть небольшое приложение, связанное через MSMQ, поэтому я решил сделать веб-страницу aspx, чтобы контролировать содержимое этого msmq.

Я протестировал эту страницу на нашем сервере приема, работает отлично.
Однако, когда я тестирую его на нашем сервере prod, если msmq не пуст, у меня есть страница с ошибкой «ошибка сервера в мониторинге MSMQ : не могу найти форматер, способный читать это сообщение».

Вот соответствующий раздел кода :

@{
    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>
}

Код является копией макаронных изделий с одного сервера на другой, и развертывание было выполнено точно таким же образом. Кто-нибудь знает, что я могу посмотреть, чтобы исправить это?

Я искал решения, но: у меня есть форматер, поэтому это не кажется проблемой.
Код работает на другом сервере, поэтому я думаю, что он может быть не связан с самим кодом, но с окружающей средой.
Я проверил с «go to definition», где страница получила определение» ожидание заказа dto «и» queue writer», и он отправляет меня на страницу» из метаданных», что заставляет меня задаться вопросом, Может ли это быть проблемой, но я сильно сомневаюсь, что, так как даже если писатель очереди не находится в прямых метаданных, страница может отправлять сообщения в msmq, просто не читать его содержимое.

Есть идеи?

(Извините за длинный пост)

1 ответ

  1. Итак, я нашел источник моих проблем:

    — Как уже говорилось, опция определения f12/see показала мне метаданные, но я не нашел никакого реального класса/кода, соответствующего.
    ==> Это привело меня к поиску информации о том, где вы положили код в asp.net web app. Ответ: в «App code folder», который затем компилируется, чтобы сделать»App code dll». Знаешь что? Вы не можете просто скопировать вставить этот файл и надеяться, что он будет работать, по-видимому.

    Поэтому я повторно взял исходный код, повторно скомпилировал и заменил «неудачные» файлы. Tadaaa, я могу контролировать мой msmq.

    (Также была опечатка, чтобы исправить, потому что страница не смогла создать правильный DTO для передачи, и пришлось очистить очередь несколько раз, так как это в prod, и я не могу просто отправить неправильную информацию, но эй. Вот как вы учитесь).

    По крайней мере, теперь я зарегистрирован на SO.