2012-04-18 41 views
5

MQサーバーとクライアントをインストールせずにC#を使用してWebSphere MQに接続すると、例外The type initializer for 'IBM.WMQ.MQQueueManager' threw an exceptionが発生します。 MQサーバから2つのMQ dll(amqmdnet.dllamqmdxcs.dll)の参照を追加しますが、動作しません。 MQサーバーまたはクライアントをインストールせずにMQに接続するにはどうすればよいですか?ありがとうございました!IBM.WMQ.MQQueueManagerの初期化子が例外をスローする

答えて

3

MQクライアントライブラリをインストールせずに使用することはお勧めしません。インストールにより、必要なバイナリがすべてインストールされ、GACに登録されます。 amqmdxcsへの参照の追加は必須ではありません。 amqmdnetへの参照だけで十分です。

したがって、MQクライアントをインストールしてアプリケーションを実行することをお勧めします。

+0

本当にありがとうございます!MQクライアントをインストールせずに新しいQMQueue()を実行するとTypeInitializationExceptionがスローされます。アプリを使用している各コンピュータがMQクライアントをインストールする必要がある場合、クライアントアプリケーションですそれは小さくない)、私はそれが便利で非効率的ではないと思う。多分もっと良い解決策があるかもしれません。 –

+0

IBMは、クライアントのインストール全体より小さい*サポートされている*構成を提供していません。これが重要な場合は、https://www.ibm.com/developerworks/rfe/にアクセスして、実装面積の小さい、サポートされているクライアント・インストール・パッケージを求める拡張要求を提出してください。他の人々はその要件に投票することができ、IBMはそれが普及している(またはしていない)とそれに応じて優先順位を付けることを認識します。 (これは、ここや他のフォーラムのフィードバックに基づいて、これはかなり人気がありますが、誰もまだRFEに入っていません) –

+0

ありがとうございます!これは解決ですが、長い時間が必要な場合があります。 –

0

も参照してください。 .net using IBM MQ without full MQ client install

は、基本的には、WMQ binフォルダから2つのDLLつかむ:amqmdnet.dll & amqmdxcs.dll

を、私はあなたがGACで2つのDLLのを登録する必要がWMQ 7.5見つかりそれが正しく機能するようにします。あなたはそれらを登録するために管理者の迫害が必要です。 「amqmdnet.dll」と「amqmdxcs.dll」

次のことができます。

参照ネイティブWMQを使用するには、プロジェクト内のライブラリは

0

はいあなたは、あなたが以下の2 DLLのが必要になりますできるオブジェクトその後、次のいずれか

  1. はあなたがちょうどあなたのプロジェクトへの参照として追加することができ
  2. グローバルアセンブリキャッシュ(GAC)にこれらの2 DLLの登録

注:オプション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'がレジストリパスからサブキーを読み込み、いくつかの変数を埋めるように試みるためですそれは存在しません、それは失敗します。

私にとっては、この方法は「インストール」キーに値を入力する必要はありません。

関連する問題