我尝试创建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
答案 0 :(得分:1)
您只是将队列管理器名称传递给MQQueueManager
构造函数。你初步确定了MQEnvironment
吗?使用仅将队列管理器作为参数的MQEnvironment
构造函数时,需要初始化MQQueueManager
。另一种方法是将包含主机,端口和通道属性的Hashtable
传递给MQQueueManager构造函数,以建立与在不同计算机上运行的队列管理器的连接。如果您尚未初始化MQEnvironment
或未使用Hashtable
传递主机,端口和通道属性,则MQ.NET
客户端将尝试连接到在同一台计算机上运行的队列管理器。你的申请。
您是否在运行应用程序的计算机上安装了MQ客户端?您可能正在尝试仅复制AMQMDNET.DLL来运行您的应用程序。这是System.TypeInitializationException
例外的可能原因之一。 AMQMDNET.DLL依赖于其他程序集和本机库。
我可以根据您的回复更新我的回答。
<强>更新强> 您需要安装MQ Client才能运行您的应用程序。没有MQ客户端,您的应用程序将无法运行。从here
下载并安装MQ Client