Quando collego WebSphere MQ utilizzando C# senza installare server MQ e client, ottengo l'eccezione The type initializer for 'IBM.WMQ.MQQueueManager' threw an exception
. Aggiungo il riferimento di due DLL MQ, amqmdnet.dll
e amqmdxcs.dll
dal server MQ, ma non funziona. Come posso connettermi a MQ senza installare il server o il client MQ? Grazie!Inizializzatore di tipo per IBM.WMQ.MQQueueManager genera un'eccezione
risposta
Non è consigliabile utilizzare le librerie client MQ senza installarle. L'installazione assicura che tutti i file binari richiesti siano installati e registrati con GAC. L'aggiunta di un riferimento ad amqmdxcs non è richiesta. Basta solo un riferimento ad amqmdnet.
Quindi è meglio installare il client MQ ed eseguire l'applicazione.
vedi anche: .net using IBM MQ without full MQ client install
fondamentalmente afferrare il 2 dll dalla cartella bin WMQ: amqmdnet.dll & amqmdxcs.dll
che ho trovato per WMQ 7.5 è necessario registrare i 2 DLL nella GAC perché funzioni correttamente hai bisogno di un amministratore per registrarli.
il riferimento delle librerie nel progetto di utilizzare la WMQ nativo oggetti
Sì, è possibile, è necessario il seguente 2 DLL: "amqmdnet.dll" e "amqmdxcs.dll"
Puoi allora o:
- registrare questi 2 DLL nella Global Assembly cache (GAC)
- si può semplicemente aggiungere come riferimenti al progetto
Nota, tuttavia: per l'opzione 2 è necessario assicurarsi che il percorso del registro "HKEY_LOCAL_MACHINE \ SOFTWARE \ IBM \ WebSphere MQ \ Installation" esista.
Se non esiste e le DLL di non sono nella GAC si ottengono le seguenti eccezioni:
System.TypeInitializationException: L'inizializzatore di tipo per 'IBM.WMQ.MQQueueManager' ha generato un'eccezione. -> System.TypeInitializationException: l'inizializzatore del tipo per 'IBM.WMQ.CommonServices' ha generato un'eccezione. -> System.NullReferenceException: il riferimento all'oggetto non è impostato su un'istanza di un oggetto.
Questo perché, quando non è in GAC, "amqmdxcs.dll" che contiene "IBM.WMQ.CommonServices" proverà a leggere le sottochiavi dal percorso del registro per riempire alcune variabili, ma poiché non esiste, fallirà.
Per me, questo approccio funziona senza richiedere valori nella chiave "Installazione".
- 1. Scaffold/Genera le proprietà di un oggetto in un inizializzatore
- 2. Tipo inizializzatore (costruttore statico) gestione delle eccezioni
- 3. Impossibile trovare un inizializzatore per il tipo Double in Swift
- 4. ritorno inizializzatore di lista
- 5. Hadoop genera ClassCastException per il tipo di chiave di java.nio.ByteBuffer
- 6. C++ Errore di compilazione: è inizializzatore ma tipo incompleto
- 7. Inizializzatore oggetto per raccolte oggetti
- 8. Inizializzatore designato di UITextView
- 9. Genera suggerimenti di tipo Python con SWIG
- 10. Creazione di un inizializzatore
- 11. Perché questo inizializzatore di oggetti nidificati genera un'eccezione di riferimento null?
- 12. La variabile C++ ha un inizializzatore ma un tipo incompleto?
- 13. Genera tabella per mappare IPAddress come tipo INET in PostgreSQL?
- 14. Elenco inizializzatore per oggetti con costruttore predefinito
- 15. lambda scope per inizializzatore membri statici
- 16. Il tipo Nullable GetType() genera l'eccezione
- 17. rvalore come inizializzatore per costruire un oggetto
- 18. Gson.fromJson() - genera Eccezione se Tipo è diverso
- 19. Inizializzatore di classe in Swift?
- 20. la dichiarazione di inoltro genera un errore di tipo incompatibile
- 21. String inizializzatore con graffe
- 22. Assegnazione condizionale inizializzatore C#
- 23. Debug di un inizializzatore di oggetti C#
- 24. Il modo corretto per sostituire un inizializzatore a Swift 1.1
- 25. È possibile utilizzare Resharper per rimuovere un inizializzatore di oggetti?
- 26. Run inizializzatore tranne che per le attività di rake
- 27. Perché è OK passare all'ambito di un oggetto di tipo scalare senza un inizializzatore?
- 28. inizializzatore non consentito per __shared__ variabile per CUDA
- 29. Perché la definizione dei tipi di argomento per __eq__ genera un errore di tipo MyPy?
- 30. Inizializzatore designato e inizializzatore di convenienza in ogg-c e come crearli correttamente e legarli insieme
Grazie mille! Ho comfirmed che non funziona (gettare la TypeInitializationException quando nuovi QMQueue()) senza installare MQ client.But questa è un'applicazione client, se ogni computer utilizzando l'applicazione deve installare il client MQ (non è piccolo), penso che non sia conveniente e inefficiente. Forse c'è una soluzione migliore. –
IBM non fornisce una configurazione * supportata * più piccola dell'installazione completa del client. Se questo è importante per te, vai su https://www.ibm.com/developerworks/rfe/ e invia una richiesta di miglioramento chiedendo un pacchetto di installazione client supportato di dimensioni ridotte.Altre persone possono quindi votare su tale requisito e IBM vedrà che è popolare (o meno) e dà la priorità di conseguenza. (Mi aspetto che questo sia molto popolare, basato sul feedback qui e su altri forum ma nessuno ha ancora inserito la RFE per dargli il via.) –
Grazie mille! Questa è una soluzione, ma potrebbe essere necessario molto tempo. –