我一直在这个圈子里转了一圈。我正在尝试使用提供的通道表文件连接到分布式队列管理器。如果我在我的服务器上指定环境变量 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 并且我正在克服我遇到的错误。但是我现在收到一个 I/O 错误返回:
用户代码未处理 System.IO.IOException 消息="发生 I/O 错误。" 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 中指定的通道表。任何人都知道为什么它没有拾取这些值?