创建MQQueueManager实例时出错

时间:2015-09-17 09:35:32

标签: c# ibm-mq

我尝试创建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

1 个答案:

答案 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