2010-04-18 153 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