首页 > 解决方案 > .Net:无法从程序集“IBM.XMS.Client.WMQ,版本=8.0.0.7”加载类型“IBM.WMQ.ManagedCommonServices”

问题描述

使用 .net 框架 Web API 项目,我们想为我们的 MQ 队列创建一个侦听器(消费者)。我们正在使用 XMS.Net,因为我们对接收消息的异步方式感兴趣。但是,在创建连接时,我们收到错误:

无法从程序集“IBM.XMS.Client.WMQ,版本=8.0.0.7,文化=中性,PublicKeyToken=d2666ab12fca862b”加载类型“IBM.WMQ.ManagedCommonServices”。

在此处输入图像描述

根据http://www-01.ibm.com/support/docview.wss?uid=swg1IC89514,此问题已修复,但我们仍使用 8.0.0.7 版本来解决此问题。

这对于 .Net 框架控制台应用程序工作正常,但对于 Web API 项目它失败了。

作为解决方法,我们还尝试在 app.config 中为 Web API 添加以下内容,但没有运气 -

<appSettings> <add key="MQCSCLASS" value="amqmdnet(IBM.WMQ.ManagedCommonServices)"/> </appSettings>

注意:我的机器上没有安装 MQ 客户端。我们已将 amqmdmsg、amqmdnet、amqmdnm、amqmdnsp、amqmdxcs dll 引用到项目中。

标签: c#.netasp.net-web-apiibm-mqxms

解决方案


如果您使用的是 MQ v9.1,可以尝试以下步骤

1)在环境DEVPATH=&RedistributablePackagePath&\bin中设置如下变量 在此处输入图像描述

2) 在应用程序的 App.config 文件中添加绑定重定向标签,因为应用程序是使用较低 MQ 版本编译的,并且必须针对较高版本运行。为此,您可以复制位于“&MQInstallPath&\Tools\dotnet\samples\cs\base”的 NonPrimaryRedirect.config 文件的内容

注意:您必须将 app.config 文件中的“newVersion”属性值修改为您想要运行的版本,在您的情况下它应该是 9.1.0.0,并将“href”修改为可再发行包路径。

3) 将以下标签添加到 app.config 文件中

<runtime>
<developmentMode developerInstallation="true" />
</runtime>
<appSettings>
   <add key="MQCSCLASS"
value="amqmdnet(IBM.WMQ.ManagedCommonServices)"/>
 </appSettings>

推荐阅读