当我使用C#连接WebSphere MQ而不安装MQ服务器和客户端时,我得到异常The type initializer for 'IBM.WMQ.MQQueueManager' threw an exception
。我从MQ服务器添加了两个MQ dll,amqmdnet.dll
和amqmdxcs.dll
的引用,但它不起作用。如何在不安装MQ服务器或客户端的情况下连接到MQ?谢谢!
答案 0 :(得分:4)
我不建议在不安装MQ客户端库的情况下使用它们。安装可确保安装所有必需的二进制文件并在GAC中注册。不需要添加对amqmdxcs的引用。只需参考amqmdnet即可。
因此最好安装MQ客户端并运行您的应用程序。
答案 1 :(得分:2)
是的,你可以,你需要以下2个DLL:“amqmdnet.dll”和“amqmdxcs.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'将尝试从注册表路径读取子键以填充一些变量,但是因为它它不存在,它会失败。
对我来说,这种方法在“安装”键中不需要任何值。
答案 2 :(得分:0)
另见: .net using IBM MQ without full MQ client install
基本上从WMQ bin文件夹中获取2个dll:amqmdnet.dll& amqmdxcs.dll
我发现WMQ 7.5你需要在GAC中注册2个dll才能正常工作。你需要管理员权限来注册它们。
引用项目中的库以使用本机WMQ对象