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

Я уже ходил кругами на этот раз.Я пытаюсь подключиться к диспетчеру распределенной очереди, используя предоставленный файл таблицы каналов.Я могу заставить это работать, если я укажу переменные окружения 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.

Isчто-то, что я пропустил в коде?Буду признателен за любые советы.

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

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

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

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

1 Ответ

0 голосов
/ 11 апреля 2011

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

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

...