05.03.2012, 09:43 | #1 |
Участник
|
AifMSMQAdapter
решил протестировать AifMSMQAdapter (Ax 4.0)
1 шаг Configure Message Queuing to work with Microsoft Dynamics AX 2 шаг Основное \ Настройка \ AIF \ Адаптеры транспортировки => AifMSMQAdapter 3 шаг Создаю: Основное \ Настройка \ AIF \ Каналы => AifMSMQAdapter (адрес = \\MyPC\private$\MyMsmq\ ) выдает ошибку: Цитата:
Метод "validateConfiguration" в COM-объекте класса "Microsoft.Dynamics.IntegrationFramework.Adapter.MessageQueue" возвратил код ошибки 0x80131509 (<неизвестно>), который означает: Message Queuing has not been installed on this computer.
Цитата:
14.15 MSMQ is installed and running but my .NET application fails with exception "Message Queuing has not been installed on this computer". Why?
One possible problem is that your assembly includes a DLL with a name identical to an operating system dll (for example, "security.dll"). In that case, MQRT.dll (the MSMQ runtime) will try to load the dll from the assembly instead of loading the operating system dll. It fails and cannot be loaded. Then .NET concludes that MSMQ is not installed, because it cannot load MQRT. To troubleshoot this, enable "Show Loader snaps" in Gflags and run your process under windbg. It will trace modules load and unload. (To find more about Gflags, search for the word "Gflags" at http://support.microsoft.com ). You could also use the Assembly Binding Log Viewer to display details for failed assembly binds. This information helps you diagnose why the .NET Framework cannot locate an assembly at run time. These failures are usually the result of an assembly deployed to the wrong location or a mismatch in version numbers or cultures. The common language runtime's failure to locate an assembly typically shows up as a TypeLoadException in your application. Read the following article for more information on the Assembly Binding Log viewer tool. |
|
05.03.2012, 13:17 | #2 |
Читатель
|
А вы очередь на AOS-е поставили?
|
|
06.03.2012, 08:30 | #3 |
Участник
|
спасибо.
Проблема оказалось в следующем: Цитата:
Before installation, determine which account you want the AOS service to run as (the AOS account). By default, an AOS instance runs as the Network Service account of the computer that you install it on. You can also set the AOS instance to run as a domain account.
Note. To use MSMQ for document exchange in your system, you must set the AOS account to be a domain account. |
|
06.03.2012, 11:50 | #4 |
Читатель
|
Мы явно что-то сделали не так...
Странно, но AOS, запущенный из под Network Service, у нас прекрасно работает с MSMQ Всего-то нужно было настроить права на очередь.
|
|
06.03.2012, 12:57 | #5 |
Участник
|
В очереди AifGatewaySendService, AifOutboundProcessingService - присутствуют,
хотя мне не понятно, как/почему это может повлиять на настройки... С правами хорошая идея, поставил на Private и Public очередь права ВСЕМ - ВСЕ но не помогло... P.S. Полностью на "Очередь сообщений" (первая красная галка) - изменить права не дает Последний раз редактировалось kaw; 06.03.2012 в 13:02. |
|
06.03.2012, 13:29 | #6 |
Читатель
|
Цитата:
Сообщение от kaw
В очереди AifGatewaySendService, AifOutboundProcessingService - присутствуют,
хотя мне не понятно, как/почему это может повлиять на настройки... С правами хорошая идея, поставил на Private и Public очередь права ВСЕМ - ВСЕ но не помогло... P.S. Полностью на "Очередь сообщений" (первая красная галка) - изменить права не дает Код: FormatName:DIRECT=OS:mycomputername\private$\privatequery Последний раз редактировалось b_nosoff; 06.03.2012 в 13:32. |
|
06.03.2012, 14:02 | #7 |
Участник
|
Цитата:
Сообщение от b_nosoff
только что проверил, правда на пятерке и семерке - после выдачи NETWORK SERVICE полного доступа к свежесозданной очереди, доступ к публичной очереди легок и непринужденен. К частной чуть сложнее - путь прописывается как
Код: FormatName:DIRECT=OS:mycomputername\private$\privatequery я пытался стандартными средствами Aif, попробывал через COM, по аналогии с AifMSMQAdapter . validateConfiguration X++: #AIF COM MSMQ; int actualPermissions; int requiredPermissions; ; // Create COM object new InteropPermission(InteropKind::ComInterop).assert(); // BP Deviation Documented MSMQ = AifUtil::getCOM(#MSMQProgId); CodeAccessPermission::revertAssert(); new InteropPermission(InteropKind::ComInterop).assert(); // BP Deviation Documented actualPermissions = MSMQ.validateConfiguration('\\\\MyPC\\mymsmq1'); CodeAccessPermission::revertAssert(); // Make sure they are sufficient if(actualPermissions < requiredPermissions) throw error("@SYS95514"); Цитата:
COM-объект класса "Microsoft.Dynamics.IntegrationFramework.Adapter.MessageQueue" не удалось создать. Убедитесь, что объект был должным образом зарегистрирован на компьютере "MyPC".
Объект "COM" не может быть создан |
|
06.03.2012, 14:37 | #8 |
Читатель
|
Цитата:
PS. Почему я упомянул про транзактность - мне не удалось заставить Аксапту работать с нетранзактными очередями... |
|
07.03.2012, 07:17 | #9 |
Участник
|
Цитата:
если я правильно понял в на форме "Каналы" (AifChannel), Вы прописываете именно такую строку ? P.S. нашел пример на VBS http://blogs.msdn.com/b/sansom/archi...from-msmq.aspx который отлично работает... |
|
07.03.2012, 11:20 | #10 |
Читатель
|
Цитата:
Честно говоря, идей, почему у вас не работает очередь, нет. Можно попробовать стандартные админские действия (переустановку компонента). PS. На всякий случай спрошу, вы точно установили очередь на том же сервере, где и AOS крутится? |
|
|
За это сообщение автора поблагодарили: kaw (1). |
07.03.2012, 13:10 | #11 |
Участник
|
Спасибо, вопрос решился.
Цитата:
у меня очередь ассоциируется с Пакетником. P.S. Утешаю себя, что блаодаря своей невнимательности, столько много нюансов накопал |
|
11.03.2012, 06:39 | #12 |
Участник
|
Цитата:
Админ объснил глюк тем что что не стандарно устанавливался сервер. Както через клонирование. |
|