Как указать местоположение таблицы каналов WebSphere MQ для веб-приложения .net с помощью web.config

Я уже некоторое время хожу кругами по этому поводу. Я пытаюсь подключиться к распределенному диспетчеру очередей, используя предоставленный файл таблицы каналов. Я могу заставить это работать, если укажу переменные среды MQCHLLIB и MQCHLTAB на своем сервере. Однако в документации IBM указано, что файл конфигурации .net может переопределить эти переменные.

Вот что я поместил в свой файл web.config:

...
<configSections>
   <section name="CHANNELS" type="System.Configuration.NameValueSectionHandler" />
</configSections>

<CHANNELS>
   <add key="ChannelDefinitionDirectory" value="C:\temp"></add>
   <add key="ChannelDefinitionFile" value="DSM_MOM_TEST.tab"></add>
</CHANNELS>
...

И вот код, который выполняется:

Hashtable properties = new Hashtable();
//Add managed connection type to parameters.
const String connectionType = MQC.TRANSPORT_MQSERIES_CLIENT;
properties.Add(MQC.TRANSPORT_PROPERTY, connectionType);
return new MQQueueManager(queueManagerName, properties);

Для queueManagerName задан универсальный администратор очередей "*Q101T".

Однако это не работает, и я получаю сообщение об ошибке: 2058 MQRC_Q_MGR_NAME_ERROR.

Мне не удалось найти больше документации о том, как заставить это работать, кроме переменных среды, и стандартный mqclient.ini должен быть переопределен разделом каналов в web.config.

Есть ли что-то, что я пропустил в коде? Мы будем очень благодарны за любые советы.

Изменить: я изменил connectionType на MQC.TRANSPORT_MQSERIES_MANAGED, и я избавился от возникающей ошибки. Однако теперь я получаю сообщение об ошибке ввода-вывода:

Исключение System.IO.IOException не было обработано кодом пользователя. Сообщение = "Произошла ошибка ввода-вывода". Source="amqmdnet"
StackTrace: в IBM.WMQ.MQChannelTable.CreateChannelEntryLists(MQChannelListEntry nameList)

Я думаю, что это, скорее всего, связано с https://www-304.ibm.com/support/docview.wss?uid=swg1IC69174, так что теперь я жду, пока ребята из промежуточного программного обеспечения подтвердят, так ли это, и, надеюсь, предоставят мне новый файл .TAB...

Edit2 Похоже, проблема не в этом. Я запустил трассировку MQ, и она выдает ошибку, потому что не может найти файл AMQCLCHL.TAB. Я не понимаю, почему он все еще ищет этот файл. Он должен использовать таблицу каналов, указанную в моем файле web.config. Кто-нибудь знает, почему он не принимает эти значения?


person Matt    schedule 13.01.2011    source источник


Ответы (1)


Файл конфигурации .Net используется только для типов управляемых клиентских подключений, поэтому переход в управляемый режим определенно был шагом в правильном направлении. Теперь вопрос в том, действительно ли приложение работает в управляемом режиме. Дерево решений описано в Определение используемого типа подключения раздела Инфоцентра. Обратите внимание, что в некоторых случаях управляемое соединение может вернуться к неуправляемому. Я бы посоветовал просмотреть этот раздел, чтобы увидеть, применимы ли какие-либо из этих случаев.

В качестве альтернативы попробуйте настроить таблицу каналов в файле mqclient.ini. Это значение используется, если оно не переопределено файлом конфигурации .Net. Если установка значения здесь работает, это подтверждает, что значения в файле конфигурации .Net игнорируются, предположительно, потому что приложение работает в неуправляемом режиме.

person T.Rob    schedule 11.04.2011