【问题标题】:IBMMQDotnetClient is compatible with IBMMQ 7.5?IBMMQDotnetClient 与 IBMMQ 7.5 兼容吗?
【发布时间】:2021-07-13 03:13:37
【问题描述】:

我正在使用那个非常有用的项目作为参考:

Github,感谢 micheleissa。

考虑到我的旧 IBMMQ 版本 (7.5) 的情况,它也不使用密码,只允许使用只有用户名的内部连接,是否可以将该项目与来自 Nuget 的 IBMMQDotnetClient 9.2.2 一起使用。

我尝试添加此行,但没有成功

            _connectionOptions = new Hashtable()
            {
                { MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED },
                { MQC.APPNAME_PROPERTY, _queueOptions.AppName },
                { MQC.CHANNEL_PROPERTY, _queueOptions.Channel },
                { MQC.CONNECT_OPTIONS_PROPERTY, MQC.MQCNO_RECONNECT_Q_MGR },
                { MQC.CONNECTION_NAME_PROPERTY, string.Join(",", _queueOptions.MqHostOptionsList.Select(opt => $"{opt.HostName}({opt.Port})"))},
                { MQC.USER_ID_PROPERTY, $"{_queueOptions.Username}"},
                { MQC.USE_MQCSP_AUTHENTICATION_PROPERTY, false}
                //{ MQC.PASSWORD_PROPERTY, $"{_queueOptions.Password}" }
            };

但我只有这些参数:

  • queueManager:测试管理员
  • 频道:测试通道
  • connName:test.info.net
  • 端口:1416
  • 名称:TEST.INFO
  • 用户:svc_test

老实说,我认为用户甚至没有必要。 我使用 docker IBMMQ 9.2 尝试了这段代码,使用了所有参数,它正在工作。

MQRC_NOT_AUTHORIZED : 2035

【问题讨论】:

  • 请添加来自您的队列管理器 AMKERR01.LOG 的错误消息以显示安全故障的原因。
  • 显示您的代码。如果您没有指定用户名和密码,它只会在您运行的用户中发送。
  • @MoragHughson 我会在到达基础设施团队时尝试获取它。
  • @JoshMc 我做了一些更改,如果有帮助,请再次检查。
  • IBM MQ 7.5 qmgrs 将忽略用户标识。您的 9.2.2 应用程序以什么用户身份运行?尝试以您尝试设置的用户身份运行它。

标签: c# .net ibm-mq


【解决方案1】:

首先我的公司搞得一团糟,但我不得不删除

{ MQC.USER_ID_PROPERTY, $"{_queueOptions.Username}"},

因为在这种情况下,ibmmq 自动使用机器用户,所以请将此帐户添加到系统中。

【讨论】:

  • 这通常意味着您的队列管理器未提供连接身份验证。您可以在本地定义任何受信任的用户并连接到具有该权限级别的队列管理器。您的应用程序在设置和不设置 MQC.USER_ID_PROPERTY 的情况下是否表现不同,我认为它的行为会相同,它将向用户发送应用程序运行的身份并忽略该属性。
猜你喜欢
  • 1970-01-01
  • 2015-08-09
  • 2018-08-27
  • 2011-12-31
  • 2020-03-19
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多