6

当我使用 C# 连接 WebSphere MQ 而不安装 MQ 服务器和客户端时,我得到了异常The type initializer for 'IBM.WMQ.MQQueueManager' threw an exception。我从 MQ 服务器添加了两个 MQ dll 的引用amqmdnet.dllamqmdxcs.dll但它不起作用。如何在不安装 MQ 服务器或客户端的情况下连接到 MQ?谢谢!

4

3 回答 3

5

我不建议在不安装 MQ 客户端库的情况下使用它们。安装确保所有必需的二进制文件都已安装并在 GAC 中注册。不需要添加对 amqmdxcs 的引用。只需参考 amqmdnet 就足够了。

因此最好安装 MQ 客户端并运行您的应用程序。

于 2012-04-18T06:30:38.720 回答
3

是的,您可以,您将需要以下 2 个 DLL:“amqmdnet.dll”和“amqmdxcs.dll”

然后,您可以:

  1. 在全局程序集缓存 (GAC) 中注册这 2 个 DLL
  2. 您可以将它们添加为对您的项目的引用

但是请注意:对于选项 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”会尝试从注册表路径中读取子键以填充一些变量,但由于它不存在,它会失败。

对我来说,这种方法不需要“安装”键中的任何值即可工作。

于 2016-01-27T11:55:03.883 回答
0

另请参阅: .net 使用 IBM MQ 没有完整的 MQ 客户端安装

基本上从 WMQ bin 文件夹中获取 2 个 dll:amqmdnet.dll & amqmdxcs.dll

我发现对于 WMQ 7.5,您需要在 GAC 中注册 2 个 dll 才能正常工作。您需要管理员权限才能注册它们。

引用项目中的库以使用本机 WMQ 对象

于 2014-08-08T10:19:48.317 回答