创建MQQueueManager实例错误
本文关键字:错误 实例 MQQueueManager 创建 | 更新日期: 2023-09-27 18:13:11
嗨,我有一个错误,当我试图创建MQQueueManager的实例。第63行(来自错误)是创建实例MQQueueManager。
队列配置在机器上,我不能登录,我不知道队列正在运行。
错误是否可以推断出失败的原因?
System.TypeInitializationException: The type initializer for 'IBM.WMQ.MQQueueManager' threw an exception. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at IBM.WMQ.Nmqi.NativeManager.InitializeNativeApis(String mode)
--- End of inner exception stack trace ---
at IBM.WMQ.MQCommonServices..ctor()
--- End of inner exception stack trace ---
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at IBM.WMQ.CommonServices.CreateCommonServices()
at IBM.WMQ.CommonServices.TraceEnabled()
at IBM.WMQ.MQBase..ctor()
at IBM.WMQ.Nmqi.NmqiEnvironment..ctor(NmqiPropertyHandler nmqiPropertyHandler)
at IBM.WMQ.Nmqi.NmqiFactory.GetInstance(NmqiPropertyHandler properties)
at IBM.WMQ.MQQueueManager..cctor()
--- End of inner exception stack trace ---
at IBM.WMQ.MQQueueManager..ctor(String queueManagerName)
at Ccap.Bnp.MQAdapter..ctor() in D:'Programowanie'Xxx'MQAdapter.cs:line 63
您只是将队列管理器名称传递给MQQueueManager
构造函数。你初始化MQEnvironment
了吗?当使用仅将队列管理器作为参数的MQQueueManager
构造函数时,需要初始化MQEnvironment
。另一种方法是将包含主机、端口和通道属性的Hashtable
传递给MQQueueManager构造函数,以建立到运行在另一台机器上的队列管理器的连接。如果您没有初始化MQEnvironment
,或者没有使用Hashtable
来传递主机、端口和通道属性,那么MQ.NET
客户机将尝试连接到与您的应用程序在同一台机器上运行的队列管理器。
您还在运行应用程序的机器上安装了MQ客户机吗?您可能试图仅复制AMQMDNET.DLL来运行应用程序。这是System.TypeInitializationException
异常的可能原因之一。dll依赖于其他程序集和本机库。
我可以根据你的回答更新我的答案。
您需要安装MQ Client来运行应用程序。没有MQ客户机,您的应用程序将无法工作。从这里下载并安装MQ Client