gpt4 book ai didi

c# - 将 USER_ID_PROPERTY 添加到 Hashtable 时,MQQueueManager 构造函数失败

转载 作者:行者123 更新时间:2023-11-30 15:17:29 29 4
gpt4 key购买 nike

基本上,我的工作任务涉及使用 IBM MQ 和 C#,虽然我擅长 C#,但在网络编程和 IBM MQ 方面我完全是个新手(因为我刚开始使用 IBM MQ 昨天)。

无论如何,在阅读了大量指南和示例并解决了很多问题后,我设法制作了一个连接到 QueueManager 并成功发送和读取消息的 C# 解决方案。然而,我只能通过禁用默认授权来做到这一点,虽然当我需要做的只是测试我的适配器类时这很好,但我现在需要能够指定一个用户 ID 和一个密码,并最终恢复所有我禁用的授权设置。

问题是,每当我尝试将 USER_ID_PROPERTY 属性添加到 connectionProperties 哈希表时,QMQueueManager 构造函数都会返回空引用系统异常。

这是我构建哈希表的代码;

Hashtable connectionProperties = new Hashtable();

// Add the connection type
connectionProperties.Add(MQC.TRANSPORT_PROPERTY, connectionType);

// Set up the rest of the connection properties, based on the connection type requested
switch (connectionType) {

case MQC.TRANSPORT_MQSERIES_BINDINGS: break;

case MQC.TRANSPORT_MQSERIES_CLIENT:
case MQC.TRANSPORT_MQSERIES_XACLIENT:
case MQC.TRANSPORT_MQSERIES_MANAGED:
//connectionProperties.Add(MQC.USER_ID_PROPERTY, "newUser");
connectionProperties.Add(MQC.HOST_NAME_PROPERTY, hostName);
connectionProperties.Add(MQC.PORT_PROPERTY, 1421);
connectionProperties.Add(MQC.CHANNEL_PROPERTY, channel);
connectionProperties.Add(MQC.CONNECTION_NAME_PROPERTY, connectionName);
break;

default:
Console.WriteLine(connectionType + " is not a valid connection type");
break;
}

return connectionProperties;

如果我按原样运行代码,一切正常,我可以毫无问题地连接到队列、发送、读取和断开连接,当我取消注释 Use ID 行时,我在以下行;

qmQueueManager =  new MQQueueManager(qManager, connectionProperties); 

这是弹出的异常信息:

A System error occurred: System.NullReferenceException: Object reference not set to object instance. At IBM.WMQ.MQQueueManager.Connect (String queueManagerName) At IBM.WMQ.MQQueueManager..ctor (String queueManagerName, Hashtable properties) At MQNetworkClient.MQManager.ConnectMQ (String details) Location C: \ Users \ A440 \ Documents \ Visual Studio 2017 \ Projects \ MQNetworkClient \ MQNetworkClient \ MQManager.cs: Line 124 At MQNetworkClient.MQManager.TryMQAction (MQSanityCheck sanityCheck, MQActionHandler mqAction, String details, String sanityFailMessage) Location C: \ Users \ A440 \ Documents \ Visual Studio 2017 \ Projects \ MQNetworkClient \ MQNetworkClient \ MQManager.cs: Line 95

错误消息并没有让我继续下去,虽然我检查了 QueueManager 的 AMQError 日志,但那里什么也没有写。

我真的很感激任何解决方案、解决方法或任何帮助跟踪问题的方法,基本上,我很感激能得到任何可能为我指明正确方向的建议。

如果它有某种相关性,我使用的是 IBM MQ v9 和 Visual Studio 2017。

谢谢。

最佳答案

这是一个产品缺陷(我也这样提出过)。基本上,如果您提供用户 ID,则必须提供密码,因为代码会取消引用密码字段,而不会首先检查是否提供密码字段……抱歉!

关于c# - 将 USER_ID_PROPERTY 添加到 Hashtable 时,MQQueueManager 构造函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46217105/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com