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
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.
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
Ja, Sie können, Sie werden die folgenden 2 DLL müssen: „amqmdnet.dll“ und „amqmdxcs.dll“
können Sie dann entweder:
- diese 2 DLL im Global Assembly Cache (GAC) Registrieren
- 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.
- 1. string.Join löst eine Ausnahme aus
- 2. Der Typinitialisierer für 'CrystalDecisions.CrystalReports.Engine.ReportDocument' hat eine Ausnahme ausgelöst
- 3. Der Typinitialisierer für 'Nuget.Proxy Cache' hat eine Ausnahme ausgelöst.
- 4. Der Typinitialisierer für 'OSGeo.OSR.OsrPINVOKE' hat eine Ausnahme ausgelöst
- 5. Der Typinitialisierer für 'System.ServiceModel.Diagnostics.TraceUtility' hat eine Ausnahme ausgelöst
- 6. Der Typinitialisierer für 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' hat eine Ausnahme ausgelöst
- 7. Der Typinitialisierer für 'System.Management.Automation.Runspaces.InitialSessionState' hat eine Ausnahme ausgelöst
- 8. System.TypeInitializationException: Der Typinitialisierer für 'Oracle.DataAccess.Client.OracleConnection' hat eine Ausnahme ausgelöst
- 9. GetAllNetworkInterfaces() löst Ausnahme aus
- 10. recursive_directory_iterator löst Ausnahme aus
- 11. _CRT_DEBUGGER_HOOK löst Ausnahme aus
- 12. System.IO.File.WriteAllText löst Ausnahme für bestimmten Dateinamen aus
- 13. Android - Wann löst insertOrThrow() eine Ausnahme aus?
- 14. EnvelopeApi.CreateEnvelope() (docusign) löst eine USER_AUTHENTICATION_FAILED-Ausnahme aus
- 15. Warum löst Matcher.group() eine unzulässige Ausnahme aus?
- 16. performSegueWithIdentifier löst unbekannte Ausnahme aus
- 17. Erstellen einer Methodenreferenz für eine Nullreferenz löst keine Ausnahme aus
- 18. WebClient.DownloadFileAsync löst keine Ausnahme aus
- 19. Java-Schnittstelle löst eine Ausnahme aus, aber die Schnittstellenimplementierung löst keine Ausnahme aus?
- 20. httpClient.GetAsync löst Ausnahme aus; Zertifikatskonfiguration
- 21. Test.loadData mit benutzerdefiniertem sObject löst Ausnahme aus
- 22. Ausführen der Linq-Abfrage löst Ausnahme aus
- 23. JAXB XMLAdapter-Methode löst keine Ausnahme aus
- 24. Warum löst diese Zeichenfolgenerweiterungsmethode keine Ausnahme aus?
- 25. Android Intent löst beim Zugriff auf Extras eine Ausnahme aus
- 26. Nullable Typ GetType() löst Ausnahme aus
- 27. createTempFile löst Ausnahme "Berechtigung verweigert" aus
- 28. Java-RMI-Startserver löst Ausnahme aus
- 29. Tupel: + = Operator löst Ausnahme aus, aber erfolgreich?
- 30. Syck.dump leerer Hash löst IO-Ausnahme aus
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. –
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.) –
Vielen Dank! Diese Lösung kann aber eine lange Zeit brauchen. –