2010-04-18 135 views
4

我从我们的客户端获取了需要使用它们来通过SSL连接到MQ的密钥文件。我们从客户那里得到的文件是:通过SSL连接到IBM MQ的.NET客户端

 
xxx.crl 
xxx.kdb 
xxx.rdb 
xxx.sth 
xxx.tab 

他们说在客户机通道表。我正尝试使用下面的代码进行连接。他们说我不需要指定它将在客户端频道表中定义的队列管理器。但有一点是他们在使用“user1”创建密钥时完成的。

代码:

Hashtable connectionProperties = new Hashtable(); 

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

MQQueueManager qMgr; 

MQEnvironment.SSLCipherSpec = "TRIPLE_DES_SHA_US"; 
MQEnvironment.SSLKeyRepository = @"D:\Cert\BB\key"; 
MQEnvironment.UserId = "user1"; 
MQEnvironment.properties.Add(MQC.TRANSPORT_PROPERTY, connectionType); 
qMgr = new MQQueueManager(); 

错误我得到:

消息= “MQRC_Q_MGR_NAME_ERROR”

我也尝试远程登录这我能够做服务器。

有人可以帮助我什么是错误的,我在这里做什么,为什么我得到这个错误。

回答

0
  • 首先,你需要把在AppSettings的关键"<add key="NMQ_MQ_LIB" value="mqic32.dll" />"

  • 把连接表中的目录。

  • 介绍环境变量:MQCHLLIB ->路径表中的目录,并表

  • 的文件在C#代码的MQCHLTAB->Name使用MQQueueManager构造: "MQQueueManager oQueueMng = new MQQueueManager();"。该构造在CCDT找到服务器,通道等

  • 在C#代码,当你需要打开队列放消息, 打开队列选项MQOO_BIND_NOT_FIXED,我与选项MQC.MQOO_OUTPUT + MQC.MQOO_BIND_NOT_FIXED + MQC.MQOO_FAIL_IF_QUIESCING开幕。 oQueueMng.AccessQueue("name of the queue", "open options");

3

的“MQRC_Q_MGR_NAME_ERROR”意味着你成功连接到QMGR但QMGR的名称不匹配的连接请求的名称。例如,如果我的连接请求是针对QMGRA的,并且我连接的IP和端口针对的是QMGRB,那么我希望得到您所看到的错误。如果我的连接请求没有指定QMgr名称,那么无论我连接的QMgr应该接受连接。因此,似乎环境变量,CCDT文件或未在您的问题中显示的一行代码将连接尝试指定为QMgr名称。不幸的是,没有更多的信息,不可能将其中的一个点作为原因。

不要担心你给的user1 ID。如果这是您将收到2035 MQRC_AUTHORIZATION_ERROR的问题。该ID甚至没有检查,直到之后连接失败的地步。

这里有几个链接,可以帮助你排序所有这一切。这些是WMQ v7链接。自从2011年9月第六版的生命周期结束以来,我希望所有新的开发工作都将在第7版上进行。此外,.NEt类已集成到WMQ基本产品中,并从v7开始全面支持。MQCONN的

实例调用http://bit.ly/9HG8tC

连接WebSphere MQ客户端应用程序队列管理http://bit.ly/9eapRO

使用SSL WMQ .Net客户端http://bit.ly/9nXayP

4

我通过设置以下ENV变量下sloved问题。在连接之前。

信封可变因素是MQCHLLIB,MQCHLTAB,MQSSLKEYR - 使用Environment.SetEnvironmentVariable - 设定值

<add key="MQ_SSL_CERT_PATH" value="D:\Cert\<nameof KDB with out .kdb>" /> 
<add key="MQ_CHANNEL_LIB" value="D:\Cert" /> --- Certs location. 
<add key="MQ_CHANNEL_TAB" value="xxx.tab" /> 
<add key="NMQ_MQ_LIB" value="mqic.dll" /> - **Make sure you give the refarance of this DLL** 

设定毕竟这只是打电话的QueueManager =新MQQueueManager(); - 你应该很好。

+0

是否有可能没有设置环境变量并使用.net客户端代码 – Bilgehan 2018-02-16 09:07:44

相关问题