Проблемы с отправкой сообщений через MSMQ с устройства WindowsMobile - PullRequest
1 голос
/ 01 июня 2009

Я пытаюсь отправить сообщение с помощью MSMQ с мобильного устройства в удаленную частную очередь на сервере.

Что происходит? Я не испытываю никаких ошибок, когда мобильный код отправляет сообщение. Если я посмотрю на папку msmq на мобильном устройстве, она действительно создала файл .oq (исходящая очередь) для удаленного устройства, на которое оно отправляет.

Я использую Direct = TCP с IP-адресом в формате имени для очереди. Я подтвердил, что идентичный код работает без проблем с моего рабочего стола. Сообщение доставлено правильно.

Я не верю, что проблема в коде. Возможно, мне не хватает того, что необходимо сделать в мобильной среде, чтобы сообщение покинуло очередь и было доставлено на сервер.

Вещи, которые я проверил или сделал для устранения неполадок:

  1. Я подтвердил, что все сообщения от visadm, использующие verify, приемлемы.
  2. Двоичный файл включен для MSMQ.
  3. Журнал сообщает, что MSMQ запущен без ошибок.
  4. Все сертификаты SDK установлены на устройстве.
  5. Файл .oq создается при отправке исходящего сообщения.
  6. Журнал и тупик включены в сообщение. (Сервер ничего не сообщает о невозможности доставки - я не верю, что он когда-либо подключался)
  7. Сеть активна и действительна (я могу посещать веб-страницы, размещенные на сервере через браузер)
  8. Сервер MSMQ действителен (я могу использовать идентичный код с рабочего стола и доставлять сообщения)
  9. Через visadm правильно сообщает о состоянии на мобильном устройстве для MSMQ.

Я надеюсь, что кто-то может быть знаком с MSMQ на Windows Mobile и может дать мне несколько советов относительно того, что я, возможно, не проверял или не включал.

Я использую .Net CF 3.5 на устройстве и кодирую на C #, хотя, как я уже говорил, код, похоже, не является проблемой.

Заранее спасибо за любую помощь

1 Ответ

1 голос
/ 02 июня 2009

Кажется, проблема заключалась в том, что сервер использует транзакционную очередь сообщений. Как только я добавил; XACTONLY в конец строки моей очереди сообщений и изменил метод Send, чтобы использовать System.Messaging.MessageQueueTransactionType.Single, это сработало. Вы могли бы подумать, что это выдаст ошибку или что-то, чтобы вы знали, что это необходимо.

...