MQ サーバーとクライアントをインストールせずに C# を使用して WebSphere MQ に接続すると、例外が発生しますThe type initializer for 'IBM.WMQ.MQQueueManager' threw an exception
。amqmdnet.dll
MQ サーバーから 2 つの MQ dll の参照を追加しましたamqmdxcs.dll
が、機能しません。MQ サーバーまたはクライアントをインストールせずに MQ に接続するにはどうすればよいですか? ありがとうございました!
3 に答える
MQ クライアント ライブラリをインストールせずに使用することはお勧めしません。インストールにより、必要なすべてのバイナリがインストールされ、GAC に登録されます。amqmdxcs への参照を追加する必要はありません。amqmdnet への参照だけで十分です。
そのため、MQ クライアントをインストールしてアプリケーションを実行することをお勧めします。
はい、できます。「amqmdnet.dll」と「amqmdxcs.dll」の 2 つの DLL が必要です。
その後、次のいずれかを実行できます。
- これら 2 つの DLL をグローバル アセンブリ キャッシュ (GAC) に登録します。
- それらをプロジェクトへの参照として追加するだけです
ただし、注意: オプション 2 の場合、レジストリ パス "HKEY_LOCAL_MACHINE\SOFTWARE\IBM\WebSphere MQ\Installation" が存在することを確認する必要があります。
それが存在せず、DLL が GAC にない場合、次の例外が発生します。
System.TypeInitializationException: 'IBM.WMQ.MQQueueManager' の型初期化子が例外をスローしました。--> System.TypeInitializationException: 'IBM.WMQ.CommonServices' の型初期化子が例外をスローしました。--> System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
これは、GAC にない場合、「IBM.WMQ.CommonServices」を含む「amqmdxcs.dll」がレジストリ パスからサブキーを読み取っていくつかの変数を埋めようとするためですが、それが存在しないためです。 、失敗します。
私にとって、このアプローチは「インストール」キーに値を必要とせずに機能します。
以下も参照してください: 完全な MQ クライアントをインストールせずに IBM MQ を使用する .net
基本的に、WMQ bin フォルダーから 2 つの dll を取得します: amqmdnet.dll & amqmdxcs.dll
WMQ 7.5 を正しく動作させるには、GAC に 2 つの dll を登録する必要があることがわかりました。それらを登録するには管理者権限が必要です。
プロジェクト内のライブラリを参照して、ネイティブ WMQ オブジェクトを使用する