2012-04-18 13 views
5

Wenn ich WebSphere MQ mit C# ohne Installation von MQ-Server und -Client verbinde, erhalte ich die Ausnahme . Ich füge die Referenz von zwei MQ dlls, amqmdnet.dll und amqmdxcs.dll von MQ-Server hinzu, aber es funktioniert nicht. Wie kann ich eine Verbindung zu MQ herstellen, ohne MQ Server oder Client zu installieren? Vielen Dank!Typ-Initialisierer für IBM.WMQ.MQQueueManager löst eine Ausnahme aus

Antwort

3

Ich empfehle, MQ Client-Bibliotheken nicht zu installieren, ohne sie zu installieren. Die Installation stellt sicher, dass alle erforderlichen Binärdateien installiert und bei GAC registriert sind. Der Verweis auf amqmdxcs ist nicht erforderlich. Nur ein Verweis auf amqmdnet ist genug.

Es ist also besser, MQ-Client zu installieren und Ihre Anwendung auszuführen.

+0

Vielen Dank! Ich habe bestätigt, dass es nicht funktioniert (werfen Sie die TypeInitializationException wenn neue QMQueue()) ohne MQ-Client zu installieren. Aber das ist eine Client-Anwendung, wenn jeder Computer mit der App den MQ-Client installieren muss (es ist nicht klein), ich denke, es ist nicht bequem und ineffizient. Vielleicht gibt es eine bessere Lösung. –

+0

IBM bietet keine * unterstützte * Konfiguration, die kleiner ist als die vollständige Client-Installation. Wenn dies für Sie wichtig ist, gehen Sie zu https://www.ibm.com/developerworks/rfe/ und senden Sie eine Anforderung zur Verbesserung, in der Sie nach einem Client-Installationspaket mit geringem Platzbedarf gefragt werden.Andere Personen können dann über diese Anforderung abstimmen, und IBM wird feststellen, dass sie beliebt ist (oder nicht) und entsprechend priorisiert. (Ich gehe davon aus, dass dies sehr beliebt sein wird, basierend auf Feedback hier und anderen Foren, aber noch niemand hat den RFE betreten, um damit anzufangen.) –

+0

Vielen Dank! Diese Lösung kann aber eine lange Zeit brauchen. –

0

siehe auch: .net using IBM MQ without full MQ client install

grundsätzlich die zwei DLLs aus dem WMQ Binärordner greifen: amqmdnet.dll & amqmdxcs.dll

ich für WMQ 7.5 gefunden Sie die 2 DLL im GAC registrieren müssen damit es richtig funktioniert. Sie benötigen Admin-Permissions, um sie zu registrieren.

die Referenz die Bibliotheken in Ihrem Projekt die native WMQ verwenden Objekte

0

Ja, Sie können, Sie werden die folgenden 2 DLL müssen: „amqmdnet.dll“ und „amqmdxcs.dll“

können Sie dann entweder:

  1. diese 2 DLL im Global Assembly Cache (GAC) Registrieren
  2. Sie sie als Verweise auf Ihrem Projekt nur hinzufügen können

Hinweis, jedoch: Für Option 2 müssen Sie sicherstellen, dass der Registrierungspfad "HKEY_LOCAL_MACHINE \ SOFTWARE \ IBM \ WebSphere MQ \ Installation" vorhanden ist.

Wenn es nicht vorhanden ist und die DLL sind nicht im GAC finden Sie folgende Ausnahmen erhalten:

System.TypeInitializationException: Die Typeninitialisierer für ‚IBM.WMQ.MQQueueManager‘ hat eine Ausnahme. -> System.TypeInitializationException: Der Typinitialisierer für 'IBM.WMQ.CommonServices' hat eine Ausnahme ausgelöst. -> System.NullReferenceException: Objektreferenz wurde nicht auf eine Instanz eines Objekts gesetzt.

Dies ist, weil, wenn nicht in der GAC, die "amqmdxcs.dll", die die "IBM.WMQ.CommonServices" enthält versuchen, die Unterschlüssel aus dem Registrierungspfad zu lesen, um einige Variablen zu füllen, aber seit es existiert nicht, es wird scheitern.

Für mich funktioniert dieser Ansatz ohne irgendwelche Werte in der "Installation" -Taste.

Verwandte Themen