4

クライアントからキーファイルを取得しました。SSLを介してMQに接続するためにそれらを使用する必要があります。クライアントから取得したファイルは次のとおりです。

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

彼らはその中でクライアントチャネルテーブルを言った。以下のコードを使用して接続しようとしています。そして彼らは、クライアントチャネルテーブルで定義されるキューマネージャを指定する必要はないと言っています。ただし、「user1」を使用してキーを作成しているときに実行したことが1つあります。

コード:

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"

また、自分ができるサーバーに電話をかけてみました。

ここで何が間違っているのか、なぜこのエラーが発生するのかを教えてください。

4

3 に答える 3

4

次のenv変数を設定することで、この問題を解決しました。接続前。

環境変数は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 = new MQQueueManager();を呼び出すだけです。-あなたは良いはずです。

于 2010-05-10T18:48:44.027 に答える
3

「MQRC_Q_MGR_NAME_ERROR」は、QMgr に正常に接続されているが、QMgr の名前が接続要求の名前と一致しないことを意味します。たとえば、接続要求が QMGRA 用であり、接続先の IP とポートが QMGRB 用である場合、表示されているエラーが発生することが予想されます。接続要求で QMgr 名が指定されていない場合、接続先の QMgr は接続を受け入れる必要があります。したがって、環境変数、CCDT ファイル、または質問に表示されていないコード行のいずれかが、接続試行の前に QMgr 名を指定しているようです。残念ながら、詳細な情報がなければ、これらのいずれかを原因として指摘することはできません。

与えられた user1 ID について心配する必要はありません。これが問題である場合、代わりに 2035 MQRC_AUTHORIZATION_ERROR が返されます。ID は、接続が失敗した時点までチェックされません。

これらすべてを整理するのに役立ついくつかのリンクを次に示します。これらは WMQ v7 リンクです。v6 は 2011 年 9 月の時点でサポートが終了しているため、新しい開発はすべて v7 で行われることを願っています。また、.NET クラスは WMQ ベース製品に統合され、v7 で完全にサポートされます。

MQCONN 呼び出しの例http://bit.ly/9HG8tC

キュー・マネージャーへの WebSphere MQ クライアント・アプリケーションの接続http://bit.ly/9eapRO

WMQ .Net クライアントでの SSL の使用http://bit.ly/9nXayP

于 2010-04-23T14:59:11.520 に答える
0
  • まず、アプリ設定にキーを入れる必要があります"<add key="NMQ_MQ_LIB" value="mqic32.dll" />"

  • 接続テーブルをディレクトリに配置します。

  • 環境変数の導入:MQCHLLIB ->テーブルのディレクトリへのパス、およびテーブルMQCHLTAB->Nameのファイルのパス

  • C# コードでは、MQQueueManager コンストラクターを使用します "MQQueueManager oQueueMng = new MQQueueManager();"。そのコンストラクターは、CCDT でサーバー、チャネルなどを見つけます。

  • C# コードでは、メッセージを入れるためにキューを開く必要がある場合、オプションMQOO_BIND_NOT_FIXEDでキューを開きます。私は options で開いていますMQC.MQOO_OUTPUT + MQC.MQOO_BIND_NOT_FIXED + MQC.MQOO_FAIL_IF_QUIESCINGoQueueMng.AccessQueue("name of the queue", "open options");

于 2010-04-20T20:58:18.780 に答える