2012-04-18 9 views
5

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

3

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.

+0

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. –

+0

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.) –

+0

Grazie mille! Questa è una soluzione, ma potrebbe essere necessario molto tempo. –

0

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

0

Sì, è possibile, è necessario il seguente 2 DLL: "amqmdnet.dll" e "amqmdxcs.dll"

Puoi allora o:

  1. registrare questi 2 DLL nella Global Assembly cache (GAC)
  2. 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".

Problemi correlati