Ibm mq IBM.WMQ.MQQueueManager的类型初始值设定项引发异常
当我使用C#连接WebSphere MQ而不安装MQ服务器和客户机时,会出现异常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就足够了
“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启动。)非常感谢!这是一个解决方案,但可能需要很长时间。