Ibm mq IBM.WMQ.MQQueueManager的类型初始值设定项引发异常

Ibm mq IBM.WMQ.MQQueueManager的类型初始值设定项引发异常,ibm-mq,Ibm Mq,当我使用C#连接WebSphere MQ而不安装MQ服务器和客户机时,会出现异常“IBM.WMQ.MQQueueManager”的类型初始值设定项引发异常。我从MQ服务器添加了两个MQ dll的引用,amqmdnet.dll和amqmdxcs.dll,但它不起作用。如何在不安装MQ服务器或客户端的情况下连接到MQ?谢谢大家! 我不建议在不安装MQ客户端库的情况下使用它们。安装确保所有必需的二进制文件都已安装并向GAC注册。不需要添加对amqmdxcs的引用。只要参考一下amqmdnet就足够了

当我使用C#连接WebSphere MQ而不安装MQ服务器和客户机时,会出现异常
“IBM.WMQ.MQQueueManager”的类型初始值设定项引发异常
。我从MQ服务器添加了两个MQ dll的引用,
amqmdnet.dll
amqmdxcs.dll
,但它不起作用。如何在不安装MQ服务器或客户端的情况下连接到MQ?谢谢大家!

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

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

另见:

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

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


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

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

然后,您可以:

  • 在全局程序集缓存(GAC)中注册这2个DLL
  • 您可以将它们作为引用添加到项目中
  • 注意:对于选项2,您需要确保注册表路径“HKEY\U LOCAL\U MACHINE\SOFTWARE\IBM\WebSphere MQ\Installation”存在

    如果它不存在且DLL不在GAC中,则会出现以下异常:

    System.TypeInitializationException:“IBM.WMQ.MQQueueManager”的类型初始值设定项引发异常。-->System.TypeInitializationException:“IBM.WMQ.CommonService”的类型初始值设定项引发异常。-->System.NullReferenceException:对象引用未设置为对象的实例

    这是因为,当不在GAC中时,包含“IBM.WMQ.CommonServices”的“amqmdxcs.dll”将尝试从注册表路径读取子项以填充某些变量,但由于它不存在,因此将失败


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

    非常感谢!我已经确认,如果不安装MQ客户端,它将无法工作(在新建QMQueue()时抛出TypeInitializationException)。但这是一个客户端应用程序,如果使用该应用程序的每台计算机都必须安装MQ客户端(它不是很小),我认为这既不方便也没有效率。也许有更好的解决方案。IBM不提供比完整客户端安装更小的受支持配置。如果这对您很重要,请转到并提交一份增强请求,要求提供一个占地面积小、受支持的客户端安装包。然后,其他人可以对该需求进行投票,IBM将看到它是否受欢迎,并相应地确定优先级。(根据这里和其他论坛的反馈,我预计这将非常受欢迎,但还没有人进入RFE启动。)非常感谢!这是一个解决方案,但可能需要很长时间。