2017-04-14 239 views
0

我试图使用.net和MQ客户端v8.0.0.5连接到IBM消息队列,但我不断收到以下错误:XMSFactoryFactory.GetInstance(XMSC.CT_WMQ)返回致命错误:未能初始化XMSFactoryFactory

Fatal error. Failed to initialize XMSFactoryFactory

Could not load file or assembly 'IBM.XMS.Client.Impl, Version=8.0.0.5, Culture=neutral, PublicKeyToken=d2666ab12fca862b' or one of its dependencies.

The system cannot find the file specified.":"IBM.XMS.Client.Impl, Version=8.0.0.5, Culture=neutral, PublicKeyToken=d2666ab12fca862b

这里是我迄今所做的:我的机器上

  • 安装MQ客户v8.0.0.5(64)。
  • 引用以下组件:
  • amqmdnet.dll
  • amqmdnsp.dll
  • amqmdxcs.dll
  • IBM.XMS.dll
  • IBM.XMS.Admin.dll
  • IBM.XMS .Client.Impl.dll
  • IBM.XMS.NLS.dll
  • IBM.XMS.Provider.dll
  • IBM.XMS.Util.dll

现在我的机器上也安装了版本v7.5.0.4,并且没有连接到队列的问题。

我还注意到,GAC中没有v8.0.0.5的程序集,但v7.5.0.4的程序集存在。这可能是原因吗?

不幸的是,我无法删除v7.5.0.4,直到两个版本都能正常工作。

回答

2

是的,MQ v8.0.0.5不在GAC中的XMS .NET程序集很可能是原因。

您可以查看使用重定向的替代方法,更新app.config文件以使用应用程序所需的正确版本的程序集。查看您的MQ安装目录,找到名为NonPrimaryRedirect.config的文件。该文件包含应用程序查找特定版本的MQ/XMS .NET程序集所需的示例配置。将该文件的内容复制到应用程序的app.config文件中,然后尝试。您必须确保所有href属性指向正确的路径。

+0

这是为我做的。一旦我更新了app.config以添加'IBM.XMS.Client.Impl.dll'的文件引用,代码就开始为其他程序集抛出相同的错误。在我逐一添加它们之后,代码开始抛出一个不同的错误,我没有记下来。发布我运行MQ文件夹中的'amqiRegisterdotNet.cmd'以将V8.0.0.5程序集注册到GAC。之后,我收到另一个错误,我通过将程序集“amqmdnet.dll”添加到app.config中解决了这个问题,与我为其他人一样。问题解决了,我现在可以读/写消息到队列中。 – Vishal